我的代码中有以下python表达式
import numpy as np
a = np.array([1,0,1,0])
b = np.array([True,False,False,True])
print a[b],b[a]
我得到的输出看起来像这样:
[1 0] [False True False True]
我无法理解如何生成此输出 任何人都可以解释一下。
答案 0 :(得分:5)
他们是两个不同的案例
a[b]
是逻辑索引。索引b
必须是布尔数组,相同大小必须是a
。每个布尔值b
表示接受/离开此a
元素。即:对于向量a_i, b_i
中的a, b
中的每对值:如果b_i == True
,请将a_i
添加到输出向量,否则忽略它。
b[a]
正在使用多个值进行索引。就像在普通的python中一样,你可以b[0]
取b
的第一个值,在numpy中你可以使用数组作为索引来获取多个元素。在您的情况下,这会产生与[b[1], b[0], b[1], b[0]]