Python基础问题 把True False做为筛选数组内容,直接写数组也能实现,对这个概念有点无法理解,这个和切片有关系吗。

# # 3.2.2
# # 使用布尔数组i作为下标存取数组a中的元素:返回数组a中所有在数组b中对应下标为True的元素
# # 生成10个满足[0,1)中均匀分布的随机数
# a = np.random.rand(10)
# print(a)
# # 大于0.5的元素索引
# print('a > 0.5=',a > 0.5)
# # # 大于0.5的元素
# b = a[a > 0.5]
# print(b)
# # # 将原数组中大于0.5的元素截取成0.5
# a[a > 0.5] = 0.5
# print(a)
# # # # b不受影响
# print(b)
a = np.array([2, 3])
b = np.array([True, False])
c = a[b]
print(c)
可以这么理解:判断条件a > 0.5(以a为numpy的数组为例),会返回一个跟a维度相同的数组,里面根据条件的满足情况,返回True或False。然后a[a>0.5]就是把对应位置为True的元素取出来,重新生成一个numpy.ndarray形式的数组。
1.png
 

要回复问题请先登录注册