开发者社区> 问答> 正文

如果满足条件则替换Numpy元素

我有一个需要处理的大型numpy数组,以便在满足条件的情况下将每个元素更改为1或0(稍后将用作像素蒙版)。数组中大约有800万个元素,而我目前的方法对于简化流程花费的时间太长:

for (y,x), value in numpy.ndenumerate(mask_data):

if mask_data[y,x]<3: #Good Pixel
    mask_data[y,x]=1
elif mask_data[y,x]>3: #Bad Pixel
    mask_data[y,x]=0

是否有一个numpy函数可以加快速度? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 20:24:44 525 0
1 条回答
写回答
取消 提交回答
  • import numpy as np a = np.random.randint(0, 5, size=(5, 4)) a array([[4, 2, 1, 1], [3, 0, 1, 2], [2, 0, 1, 1], [4, 0, 2, 3], [0, 0, 0, 2]]) b = a < 3 b array([[False, True, True, True], [False, True, True, True], [ True, True, True, True], [False, True, True, False], [ True, True, True, True]], dtype=bool)

    c = b.astype(int) c array([[0, 1, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [0, 1, 1, 0], [1, 1, 1, 1]]) 您可以使用以下方法来缩短它:

    c = (a < 3).astype(int)

    2020-02-08 20:24:56
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载