[英]how to calculate a 2D array with numpy mask
我有一个2维数组,如果值大于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]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.