多维数组的乘法

浏览: 1201

       

dot : 对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为内积);对于二维数组,计算的是两个数组的矩阵乘积;对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是:数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和:

a = np.arange(12).reshape(2,3,2)

b = np.arange(12,24).reshape(2,2,3)

c = np.dot(a,b)

a

Out[54]: 

array([[[ 0, 1],

[ 2, 3],

[ 4, 5]],

[[ 6, 7],

[ 8, 9],

[10, 11]]])

a.ndim

Out[55]: 3

#3维数组,2层三行两列

b

Out[56]: 

array([[[12, 13, 14], 

[15, 16, 17]],

[[18, 19, 20],

[21, 22, 23]]])

c

Out[57]: 

array([[[[ 15, 16, 17], 

[ 21, 22, 23]],

[[ 69, 74, 79],

[ 99, 104, 109]],

[[123, 132, 141],

[177, 186, 195]]],

[[[177, 190, 203],

[255, 268, 281]],

[[231, 248, 265],

[333, 350, 367]],

[[285, 306, 327],

[411, 432, 453]]]])

c.ndim

Out[58]: 4

a.shape

Out[59]: (2, 3, 2)

c.shape

Out[60]: (2, 3, 2, 3)

([[[[ 15, 16, 17], 

[ 21, 22, 23]],

第一行各数字为

a数组第一层第1个数字乘以b数组第一层第1行各数字

+

a数组第一层第2个数字乘以b数组第一层第2行各数字

[ 15, 16, 17]=0*[12, 13, 14]+1*[ 15, 16, 17]

第二行同样,只是换到了第二层

a数组第一层第1个数字乘以b数组第二层第1行各数字

+

a数组第一层第2个数字乘以b数组第二层第2行各数字

[ 21, 22, 23]=0*[18, 19, 20]+1*[ 21, 22, 23]

之后都是同样的规则。

                   

推荐 0
本文由 霍开拓 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册