如何将NumPy数组中布尔数组True对应位置元素设为0?
用NumPy布尔索引修改指定位置元素(保留原数组结构)
给定以下NumPy数组:
import numpy as np a = np.array([1,2,3,4,5]) b = np.array([False, False, True, True, True])
要实现将a中对应b为True的元素设为0,其余元素保留原值的需求,直接用布尔索引赋值即可,不会改变数组长度,正好符合要求:
方法一:原地修改原数组
a[b] = 0 print(a) # 输出:[1 2 0 0 0]
这种操作是直接定位到b中True对应的位置,把这些位置的元素替换成0,和c = a[b]那种提取子集的操作完全不同,不会删除任何元素。
方法二:生成新数组(不修改原数组)
如果不想改动原数组a,可以先复制一份再修改:
c = a.copy() c[b] = 0 print(c) # 输出:[1 2 0 0 0] print(a) # 原数组保持不变:[1 2 3 4 5]
内容的提问来源于stack exchange,提问作者Miss_Orchid
相关产品推荐
相关产品推荐

