numpy中的多维数组乘法

时间:2014-01-21 05:32:49

标签: python numpy scipy

我有2个多维数组。我希望将这些数组相乘。

我的两个阵列都有形状:

shape : (3, 100)

我想转换matlab代码:

sum(q1.*q2)

np.dot(q1, q2)

给我输出:

ValueError: objects are not aligned

2 个答案:

答案 0 :(得分:2)

使用矩阵元产品*代替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]])

答案 1 :(得分:1)

当我被要求做的时候我安装了Octave

sum(a .* b)

ab形状为(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)