我有两个ndarrays:
a = [[1, 2], [100, 200]]
和 b = [10, 20]
是否有可能使用 numpy 获得这样的 ndarray:
[[1 + 10, 2 + 10], [100 + 20, 200 + 20]]
你只需要转置第一个数组,执行加法,然后转回:
import numpy as np
a = np.array([[1, 2], [100, 200]])
b = np.array([10, 20])
x = a.T + b
print(x)
# [[ 11 120]
# [ 12 220]]
print(x.T)
# [[ 11 12]
# [120 220]]
请注意,转置数组是“免费的”,因此无需担心多次转置。
是的,这可以使用 reshape.
import numpy as np
a = np.array([[1, 2], [100, 200]])
b = np.array([10, 20])
result = a + b.reshape(-1, 1) # is a column
numpy broadcasting
:
a + b[:,None]
解释
b[:,None]
是
array([[10],
[20]])
所以通过将两个数组相加,数组
array([[10],
[20]])
将被广播并汇总到
a
的每一列,产生想要的结果。
输出:
array([[ 11, 12],
[120, 220]])