1

我有 2D numpy 数组,具有示例形状:

>>> a.shape
(48, 160)

我想在元素或每一行之间做简单的操作,就像a[0] - a[1]每一行对所有其他行一样。

我知道如何简单地通过使用for循环和迭代行来做到这一点,但我想知道是否有一些 numpy 切片特定指令,可以在不使用for循环的情况下做到这一点

4

1 回答 1

2

你可以使用广播魔法来做到这一点。

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 中每一行对的差异。

于 2012-11-08T19:02:41.683 回答