2D数组:逐行操作

时间:2012-11-08 18:49:44

标签: python numpy

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

>>> a.shape
(48, 160)

我希望在元素或每一行之间进行简单的操作,例如a[0] - a[1],但是对于所有其他行的每一行。

我知道如何通过使用for循环和迭代行来完成它,但我想知道是否有一些numpy切片特定指令,可以在不使用for循环的情况下执行此操作

1 个答案:

答案 0 :(得分: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)

This是一个很好的广播教程。在这种情况下,我创建一个(1,4,3)和b(5,1,3),我得到的结果是(5,4,3),a和b中每个行对的差异。