1
我有2个多维数组。我想乘这些数组。numpy中的多维数组乘法
我的两个数组具有形状:
shape : (3, 100)
我想转换的matlab代码:
sum(q1.*q2)
到
np.dot(q1, q2)
给我输出:
ValueError: objects are not aligned
我有2个多维数组。我想乘这些数组。numpy中的多维数组乘法
我的两个数组具有形状:
shape : (3, 100)
我想转换的matlab代码:
sum(q1.*q2)
到
np.dot(q1, q2)
给我输出:
ValueError: objects are not aligned
我安装八度的,当被要求做
sum(a .* b)
与a
和b
具有形状(3, 100)
,返回形状(1, 100)
的数组。在numpy的准确当量将是:
np.sum(a * b, axis=0)
返回形状(100,)
的数组,或者如果你想保持尺寸1的尺寸:
np.sum(a * b, axis=0, keepdims=True)
你可以得到相同的结果,可能更快,使用np.einsum
:
np.einsum('ij,ij->j', a, b)
使用矩阵元素之积的*
代替dot
产物
这里是具有减小的尺寸
实施
A = np.random.randint(5,size=(3,4))
B = np.random.randint(5,size=(3,4))
result = A * B
演示
>>> A
array([[4, 1, 3, 0],
[2, 0, 2, 2],
[0, 1, 1, 1]])
>>> B
array([[1, 3, 0, 2],
[3, 4, 1, 2],
[3, 0, 4, 3]])
>>> A * B
array([[4, 3, 0, 0],
[6, 0, 2, 4],
[0, 0, 4, 3]])
'np.dot'是矩阵乘法,numpy的使用''*为元素方式乘法。 –
@BiRico - 这也是我的第一个想法(但我没有足够的信心在我的matlab中知道'。*'操作符在干什么)。为什么不把它作为答案? – mgilson