- 布尔索引
设置一个存储名称的数组(含有重复项a的)
和一个存储数据的数组
names = np.array(['a','b','c','d','a','a'])
data = np.arange(18).reshape(6,3)
array([[0,1,2],
[3,4,5],
[6,7,8],
[9,10,11],
[12,13,14],
[15,16,17]])
假设每一个名称都对应这数组的一个行,想要找出对应a的所有行
names == 'a'
#array([True,False,False,False,True,True]], dtype=bool)
data[names == 'a']
array([[0,1,2],
[12,13,14],
[15,16,17]])
可以进行反选
name != 'a'
data[names!='a']
#或者
data[~(names == 'a')]
array([[3,4,5],
[6,7,8],
[9,10,11]])
如果需要多个组合时,可以用多个布尔条件
同样可以用和,或之类的布尔运算符(& |)
注意的是,python中的关键字 and 和 or 在布尔型的数组中无效
index = (names == 'a')|(names == 'b')
data[index]
array([[0,1,2],
[3,4,5],
[12,13,14],
[15,16,17]])
a = np.arange(10).reshape(-1,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
a[a>6]
array([7, 8, 9])
reshape(-1,5)
这个是对前面创建的一维数组进行重塑运算
-1表示该维度大小由其他未对和原始数组的长度自动推断而出的
a[2::2.::2]
行从第二行开始(第一个2)
隔一个,取下一个(第二个2)
列也是隔一个,取下一个(第三个2)