Python 有一个numpy.dot文档示例不清楚
我在阅读numpy文档以获得更好的澄清,但我遇到了一个不太清楚的示例。我从以下numpy文档中复制了确切的示例:Python 有一个numpy.dot文档示例不清楚,python,numpy,Python,Numpy,我在阅读numpy文档以获得更好的澄清,但我遇到了一个不太清楚的示例。我从以下numpy文档中复制了确切的示例: a = np.arange(3*4*5*6).reshape((3,4,5,6)) b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3)) np.dot(a, b)[2,3,2,1,2,2] 问题是,在最后一行np.dota,b[2,3,2,1,2,2]中,np.dota,b后面的[2,3,2,1,2,2]在做什么 当使用np.dot将大于2
a = np.arange(3*4*5*6).reshape((3,4,5,6))
b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
np.dot(a, b)[2,3,2,1,2,2]
问题是,在最后一行np.dota,b[2,3,2,1,2,2]中,np.dota,b后面的[2,3,2,1,2,2]在做什么
当使用np.dot将大于2度的数组“点”在一起时,必须指定要对哪些轴进行多重和求和
在该示例中,[2,3,2,1,2,2]是a和b中分别选择轴的参考
从文档中:
如果a是N-D数组,b是M>=2的M-D数组,则为和
a的最后一个轴和b的第二个至最后一个轴上的乘积:
dota,b[i,j,k,m]=suma[i,j,:]*b[k,:,m]
所以在我们的例子中
a[2,3,2,:] = [342, 343, 344, 345, 346, 347]
b[1,2,:,2] = [249, 246, 243, 240, 237, 234]
当你给它们打点的时候
np.dot([249, 246, 243, 240, 237, 234], [342, 343, 344, 345, 346, 347])
你得到499128
当你使用np.dota[2,3,2,:],b[1,2,:,2]或速记np.dota,b[2,3,2,1,2,2]时,你会得到相同的答案
当你不使用任何指数时,我的假设是你得到了上面的每一个置换,因此反直觉维数c=np.dota,b
编辑2 c形状的原因是,如果按照示例对c[2,3,2,1,2,2]进行索引,则会得到相应的答案499128。这是dotvery said生成的结果数组的索引。但是你能说为什么一个四维数组和另一个四维数组的点运算是一个六维数组吗?