1、同维相乘
相乘必须满足以下两个条件:

  1. 两个n维数组的前n-2维必须完全相同。例如(3,2,4,2)(3,2,2,3)前两维必须完全一致;
  2. 最后两维必须满足二阶矩阵乘法要求。例如(3,2,4,2)(3,2,2,3)的后两维可视为(4,2)x(2,3)满足矩阵乘法。

这样的同维矩阵相乘,所得到的维度是:前n-2维不变,后2维进行矩阵乘法。
例如,(3,2,4,2)*(1,2,2,3)——>>(3,2,4,3)

注意:由于广播机制,第一维为1的,可以与第一维任何数相乘,例如:
(1,2,4,2)*(3,2,2,3)——>>(3,2,4,3)与上例结果相同。

import numpy as np# 前两个高维1和2必须对应完全相等!后面两个只需满足矩阵相乘要求即可。
a = np.zeros( (3,2,4,2) )
b = np.zeros( (3,2,2,3) ) w = np.matmul(a,b)
print( w.shape )# 结果:
(3, 2, 4, 3)

2、不同维度
在使用numpy数组时,不同维度相乘无法使用matmul,而使用*进行的是逐元素相乘。
会通过广播机制补充到同维度,再进行同维度的乘法。

例如(2,2,1)*(0,1)

import numpy as np
a = np.floor(10*np.random.random((2,2,1)))
b = [[0],[1]]
# a.reshape(3,3)
print(a)
print(b)c = a*b
# c = np.matmul(a,b)
print(c.shape)
print(c)

可得:

高维数组相乘的运算规则相关推荐

  1. matlab 高维数组赋值,MATLAB之三(高)维数组的创建

    使用下标创建 习惯的,将二维数组的第一维称为行,第二维称为列,对于三维数组的第三维称为页.三维以及三维以上的数组称为高维数组,由于高维数组比较抽样,这里主要以三维数组为例介绍如何创建高维数组.%显示A ...

  2. numpy之高维数组的转置:transpose方法——通过几何体来迅速理解

    首先说明,这个方法是博主在理解高维数组转置的transpose 方法时所提出的,因此严谨性和正确性有待考察,但私以为完全可以这样理解,因此做个记录,如果对你有帮助的话欢迎点赞收藏,如果认为有错误的话请 ...

  3. Java中高维数组或高维矩阵构建及运算

    问题背景 在做实际的商务问题时,经常遇到很高维度的矩阵,针对这个问题,经常会报内存溢出. 最近找到一个fastutil包,可以高效的处理高维数组.下面主要介绍其使用方法. 创建一个二维数组 packa ...

  4. python高维数据的读取_索引访问高维数组_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...

    购买本课程所在专题<Python数据分析师:0基础到数据分析达人>https://edu.51cto.com/topic/2570.html,赠送一本"Python相关图书&qu ...

  5. Python | Python保存高维数组array,Python用pandas将numpy保存csv文件,Python保存3维数组

    保存一维二维数组 # x是你要保存的一维或二维数组 import pandas as pd data = pd.DataFrame(x) data.to_csv('data.csv') 或者这样保存2 ...

  6. C++之vector的高维数组

    vector的高维数组通常利用套娃来实现. 1.一维数组 vector<T> v(...); 利用对象的函数实现对数组的动态操作(类似堆栈). v.push_back(...); //栈入 ...

  7. 高维数组matlab,MATLAB 高维数组

    1 B(2,5,:)=1:3 %子数组赋值创建 数组 B(:,:,1) =0 0 0 0 0 0 0 0 0 1 B(:,:,2) = 0 0 0 0 0 0 0 0 0 2 B(:,:,3) = 0 ...

  8. python保存高维数组array

    如果是1维或2维数组,可以使用np.savetxt(), 如: import numpy as np# 创建数组(2维) a = np.arange(100).reshape((20, 5))# 写入 ...

  9. matlab学习笔记11_2高维数组操作 squeeze,ind2sub, sub2ind

    一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind 觉得有用的话,欢迎一起讨论相互学习~ squeeze 删除单维度–B= ...

最新文章

  1. Microsoft Store无法下载应用 Windows update服务无法启用,错误5:拒绝访问 的解决方法。
  2. 因用了Insert into select语句,美女同事被开除了!
  3. 9.19scikit-learn安装方法
  4. $AppStart、$AppEnd 全埋点解析
  5. 推荐一个Windows下好用的终端程序:ConEmu
  6. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  7. axure 鼠标变成手,Axure教程|鼠标移入移出自动显示与隐藏三级菜单
  8. Android amr语音编解码解惑 【转http://blog.csdn.net/xyz_lmn/article/category/922246】
  9. spine纹理解包 黑底_“包治百病”是真理,这些小众包真的很治愈系
  10. java,andoid安卓去掉替换字符串中的空字符空格换行等
  11. Python 网站应用从开发到部署
  12. python用什么来写模块-使用C语言编写Python模块-引子【转】
  13. android 图片去色,android替图片去色,返回灰度图片
  14. 2003 服务器自动重启设置,Win2003定时自动重启的完美方案
  15. iOS开发细碎知识点总结二
  16. 攻防世界-MISC-摩斯电码
  17. 现货期货价格关系(现货期货价格关系分析)
  18. 二进制转化成ascll_微机原理实验-二进制到ASCII码转换
  19. 高等学校计算机水平考试分值,请问计算机二级ps的考试题型和分值是怎样的?...
  20. windowsNote(小便签)

热门文章

  1. 360加固android app反编译,apk360加固脱壳
  2. Android Studio TV开发教程(十二)帮助用户在电视上找到您的内容
  3. 链队列的实现 C语言
  4. PDF如何翻译成中文?三种方法教你怎样翻译PDF上的文字
  5. web服务器常见配置搭建详解(超详细)
  6. 有向图的邻接矩阵和邻接表画法
  7. MAMP PRO for Mac 使用说明
  8. java ltp4j_博客 | 收藏 | 100多个DL框架、AI库、ML库、NLP库、CV库汇总,建议收藏!...
  9. 【六祎 - Java】对象序列化
  10. python 移动平均线_6移动平均线预测交易