我有 2D numpy 数组,具有示例形状:
>>> a.shape
(48, 160)
我想在元素或每一行之间做简单的操作,就像a[0] - a[1]
每一行对所有其他行一样。
我知道如何简单地通过使用for
循环和迭代行来做到这一点,但我想知道是否有一些 numpy 切片特定指令,可以在不使用for
循环的情况下做到这一点
你可以使用广播魔法来做到这一点。
import numpy as np
a = np.arange(12).reshape((4, 3))
b = np.arange(15).reshape((5, 3))
diff = a[np.newaxis, :, :] - b[:, np.newaxis, :]
diff.shape
# (5, 4, 3)
这是一个很好的广播教程。在这种情况下,我制作 a (1, 4, 3) 和 b (5, 1, 3),得到的结果是 (5, 4, 3),即 a 和 b 中每一行对的差异。