通过使用NumPy将2个数组按元素数组求和来形成矩阵

时间:2018-12-14 19:30:19

标签: python arrays numpy sum

假设我有以下NumPy数组:

[int] -> (int -> [int -> int]) -> [int]

我想有一个非常有效的方法(如果可能的话,可以内置)来对这些向量求和,并获得如下所示的输出:

i = array([2, 4, 5])
j = array([0, 1, 2])

所以基本上每一列都是添加了i的第k个元素的数组j(在这种情况下,k = 0、1、2)

2 个答案:

答案 0 :(得分:3)

使用numpy.add.outer

>>> import numpy as np                                                                                                 
>>> i = np.array([2, 4, 5])                                                                                            
>>> j = np.array([0, 1, 2])                                                                                            
>>>                                                                                                                    
>>> np.add.outer(j, i)                                                                                                 
array([[2, 4, 5],
       [3, 5, 6],
       [4, 6, 7]])

答案 1 :(得分:3)

或使用broadcasting

In [272]: i[:,None]+j
Out[272]: 
array([[2, 3, 4],
       [4, 5, 6],
       [5, 6, 7]])

i[:,None]组成一个(3,1)数组,并与(3,)(或(1,3))一起广播以制作(3,3)