繁体   English   中英

如何使用numpy mask计算2D数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM