首页 > 解决方案 > numpy:将numpy数组的每个元素与另一个数组的每个元素相加

问题描述

我从 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]

有没有更简洁有效的方法?

标签: pythonnumpyvectorization

解决方案


import numpy as np

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

v1 + v2[:, None]

你可以阅读更多关于numpy 的广播规则


推荐阅读