将二元数值组合的numpy数组转换为布尔数组
将二元数值Numpy数组转换为布尔数组
针对仅包含两种不同数值的Numpy数组,你可以通过值比较的方式生成布尔数组——直接用astype(bool)的方式仅在0/1场景下有效,因为非0值都会被转为True,无法区分两种不同的非0数值。以下是几种实用方法:
方法1:基于唯一值的动态比较
如果不知道数组里的具体数值,先提取唯一值,再选择其中一个值作为True的对应项:
import numpy as np # 示例数组 arr = np.array([1,4,1,1,1,4,4]) # 获取数组中的两个唯一值 unique_vals = np.unique(arr) # 将等于第一个唯一值的元素转为True,其余为False bool_arr = arr == unique_vals[0] # 输出:[ True False True True True False False] # 如果想反过来映射,用第二个唯一值或者取反 bool_arr_reversed = arr == unique_vals[1] # 或者 bool_arr_reversed = ~bool_arr
方法2:直接指定目标值(已知数值时)
如果你明确知道要把哪个值映射为True,直接写比较表达式即可:
arr = np.array([0,3,3,0,0,0,3]) # 将0转为True,3转为False bool_arr = arr == 0 # 输出:[ True False False True True True False]
方法3:用np.where显式映射
用np.where可以更清晰地定义映射规则,效果和值比较一致:
arr = np.array([0,3,3,0,0,0,3]) unique_vals = np.unique(arr) bool_arr = np.where(arr == unique_vals[0], True, False)
这些方法不受具体数值限制,只要数组确实只有两种不同值,就能生成符合需求的布尔数组。
内容的提问来源于stack exchange,提问作者pd441
相关产品推荐
相关产品推荐

