范例:
import numpy as np x = np.array([[1., 2., 3.], [4., 5., 6.]]) y = np.ones(3) np.dot(x , y)
测试结果:
array([ 6., 15.])
当我有一个(2x3)乘(1x3)的矩阵时,这怎么可能呢?它应该是一个3x1矩阵。
mftmpeh81#
y不是一个1x 3矩阵,而是一个一维向量(如果有疑问,请检查y.size)。如果你看一下documentation,你会发现如果a是N-D数组,B是1-D数组,则它是a和B在最后一个轴上的和积。这就是为什么它返回一个包含两个元素的一维向量。
y
y.size
py49o6xq2#
在dot乘积中,左侧数组的最后一个维度的长度应该与右侧数组的倒数第二个维度的长度相同。你可以transposey,如果这对你的计算有意义的话:
dot
transpose
y = np.ones(shape=(1, 3)) out = np.dot(x , y.T)
输出量:
array([[ 6.], [15.]])
或者转换回1D:
out = np.dot(x , y[0]) # or out = np.dot(x , y.squeeze())
输出:array([ 6., 15.])
zrfyljdw3#
你在这里取一个2D数组和一个1D数组(或向量)的点积。在numpy中,行向量和列向量之间没有区别。因此,在您的示例中,该向量被视为列向量。更多信息请参阅此处。
3条答案
按热度按时间mftmpeh81#
y
不是一个1x 3矩阵,而是一个一维向量(如果有疑问,请检查y.size
)。如果你看一下documentation,你会发现如果a是N-D数组,B是1-D数组,则它是a和B在最后一个轴上的和积。
这就是为什么它返回一个包含两个元素的一维向量。
py49o6xq2#
在
dot
乘积中,左侧数组的最后一个维度的长度应该与右侧数组的倒数第二个维度的长度相同。你可以
transpose
y
,如果这对你的计算有意义的话:输出量:
或者转换回1D:
输出:
array([ 6., 15.])
zrfyljdw3#
你在这里取一个2D数组和一个1D数组(或向量)的点积。在numpy中,行向量和列向量之间没有区别。因此,在您的示例中,该向量被视为列向量。更多信息请参阅此处。