numpy:将 numpy 数组的每个元素与另一个数组的每个元素相加

numpy: summing every element of numpy array with every element of another

我要从 Matlab 转到 python。在Matlab中,给定两个长度不一定相同的向量,如果一个是行向量,一个是列向量,则可以将它们相加。

v1 = [1 3 5 7]

v2 = [2 4 6]'

v1 + v2

ans =

 3     5     7     9
 5     7     9    11
 7     9    11    13

我试图在给定两个 numpy 数组的情况下在 python 中产生相同的行为。首先想到的是循环:

import numpy as np
v1 = np.array([1,3,5,7])
v2 = np.array([2,4,6])
v3 = np.empty((3,4,))
v3[:] = np.nan

for i in range(0,3):
    v3[i,:] = v1 + v2[i]

有没有更简洁高效的方式?

import numpy as np

v1 = np.array([1, 3, 5, 7])
v2 = np.array([2, 4, 6])

v1 + v2[:, None]

您可以阅读有关 numpy's broadcasting rules 的更多信息。

试试这个:

for i in v2:
  z = []
  for j in v1:
    z.append(i+j)
  
  print(z)