用广播替换轴上的循环
Replace looping-over-axes with broadcasting
假设我有:
a = np.array([[2, 4],
[6, 8]])
b = np.array([[1, 3],
[1, 5]])
我想去:
c = np.array([[20,32],
[28, 44]])
其中 c
是 a
的每一列乘以 b
,然后沿第一个轴对该结果求和的结果。
即:
print(np.sum(a[:, 0] * b, axis=1))
[20 32]
print(np.sum(a[:, 1] * b, axis=1))
[28 44]
我可以通过广播而不是:
- 使用
np.apply_along_axis
或
- 遍历每一列?
假设我有:
a = np.array([[2, 4],
[6, 8]])
b = np.array([[1, 3],
[1, 5]])
我想去:
c = np.array([[20,32],
[28, 44]])
其中 c
是 a
的每一列乘以 b
,然后沿第一个轴对该结果求和的结果。
即:
print(np.sum(a[:, 0] * b, axis=1))
[20 32]
print(np.sum(a[:, 1] * b, axis=1))
[28 44]
我可以通过广播而不是:
- 使用
np.apply_along_axis
或 - 遍历每一列?