如何使用numpy掩码计算二维数组
how to calculate a 2D array with numpy mask
我有一个二维数组,如果值大于 0,我想做一个操作(例如 x+1)。
简单来说 python 是这样的:
a = [[2,5], [4,0], [0,2]]
for x in range(3):
for y in range(2):
if a[x][y] > 0:
a[x][y] = a[x][y] + 1
a 的结果是 [[3, 6], [5, 0], [0, 3]]。这就是我想要的。
现在我想防止嵌套循环并尝试使用像这样的 numpy:
a = np.array([[2,5], [4,0], [0,2]])
mask = (a > 0)
a[mask] + 1
结果现在是 1 维和数组的形状 [3 6 5 3]。我怎样才能做这个操作而不像之前的普通 python 示例那样丢失尺寸?
如果 a
是一个 numpy 数组,你可以简单地做 -
a[a>0] +=1
样本运行-
In [335]: a = np.array([[2,5], [4,0], [0,2]])
In [336]: a
Out[336]:
array([[2, 5],
[4, 0],
[0, 2]])
In [337]: a[a>0] +=1
In [338]: a
Out[338]:
array([[3, 6],
[5, 0],
[0, 3]])
我有一个二维数组,如果值大于 0,我想做一个操作(例如 x+1)。 简单来说 python 是这样的:
a = [[2,5], [4,0], [0,2]]
for x in range(3):
for y in range(2):
if a[x][y] > 0:
a[x][y] = a[x][y] + 1
a 的结果是 [[3, 6], [5, 0], [0, 3]]。这就是我想要的。
现在我想防止嵌套循环并尝试使用像这样的 numpy:
a = np.array([[2,5], [4,0], [0,2]])
mask = (a > 0)
a[mask] + 1
结果现在是 1 维和数组的形状 [3 6 5 3]。我怎样才能做这个操作而不像之前的普通 python 示例那样丢失尺寸?
如果 a
是一个 numpy 数组,你可以简单地做 -
a[a>0] +=1
样本运行-
In [335]: a = np.array([[2,5], [4,0], [0,2]])
In [336]: a
Out[336]:
array([[2, 5],
[4, 0],
[0, 2]])
In [337]: a[a>0] +=1
In [338]: a
Out[338]:
array([[3, 6],
[5, 0],
[0, 3]])