[i*matrix for i in arr] # list of matrices
以上列表是矩阵列表,因此当您使用sum时,它将添加数组。
In [6]: matrix = np.array([[1,2],[3,4]])
In [7]: matrix
Out[7]:
array([[1, 2],
[3, 4]])
In [9]: [i * matrix for i in (2,4,8)]
Out[9]:
[array([[2, 4],
[6, 8]]), array([[ 4, 8],
[12, 16]]), array([[ 8, 16],
[24, 32]])]
请查看帮助np.sum
File: /home/ale/.virtualenvs/ml/local/lib/python2.7/site-packages/numpy/core/fromnumeric.pyaxis=None, dtype=None, out=None, keepdims=False) Docstring: Sum of array elements over a given axis.
Parameters
---------- a : array_like
Elements to sum. axis : None or int or tuple of ints, optional
Axis or axes along which a sum is performed.
The default (`axis` = `None`) is perform a sum over all
the dimensions of the input array. `axis` may be negative, in
which case it counts from the last to the first axis.
.. versionadded:: 1.7.0
它说,如果不限定轴线,将总和所有尺寸。例如:
In [4]: np.sum(np.array([[1,2],[3,4]])) # 1 + 2 + 3 + 4...
Out[4]: 10
为什么np.sum需要更长的时间?好直觉说,在表达式[i*matrix for i in arr]
中,你正在为每个i
创建一个新的数组,然后np.sum将总和所有数组。
可能还有其他原因,但我猜是这样。
来源
2015-05-04 14:07:37
Ale
这个操作应该简单写成'np.sum(arr)* matrix'。 – Daniel
@Ophion阵列和矩阵的形状不一样。我想将整个矩阵乘以数组中的每个值。然后,我想总结所有得到的矩阵。 – JesseTrevve
这可以用'np.einsum(“k,ij-> ij”,arr,matrix)''作为''''作为'可以看出张量之间没有共同的指标。您可以通过计算上述任何方法和您选择的正确答案来自行验证。 – Daniel