如何初始化Numpy布尔数组并按轴索引设置指定位置为False?
解决方法
已知我们有一个形状为(2, 3, 3)的数组ar:
import numpy as np ar = np.arange(2*3*3).reshape(2, 3, 3)
要生成一个同形状的布尔数组,初始全为True,仅将**axis=2的第二个位置(注意Numpy用0起始索引,对应索引1)**的元素设为False,可以按以下步骤操作:
步骤1:创建全True的布尔数组
用np.full()直接生成和ar同形状的全True数组,代码直观易懂:
bool_arr = np.full(ar.shape, True, dtype=bool)
也可以用np.ones()实现同样效果:
bool_arr = np.ones(ar.shape, dtype=bool)
步骤2:指定位置赋值为False
利用Numpy的多维切片特性,选中前两个维度的所有元素,同时定位到axis=2的索引1位置,直接赋值为False:
bool_arr[:, :, 1] = False
验证结果
此时打印bool_arr就能得到期望的输出:
print(bool_arr) # 输出: # array([[[ True, False, True], # [ True, False, True], # [ True, False, True]], # # [[ True, False, True], # [ True, False, True], # [ True, False, True]]])
这种方法借助Numpy的切片赋值能力,高效简洁,非常适合处理多维数组的批量修改需求。
内容的提问来源于stack exchange,提问作者hlee
相关产品推荐
相关产品推荐

