基本的索引和切片
arr = np.arange(10)
arr[5:8] = 12
arr_slice = arr[5:8]
arr_slice[1] = 12345
基本操作
切片[ : ]会给数组中的所有值赋值
[:]效果
ndarray切片的一份副本而非视图,就需要明确地进行复制操作,例如arr[5:8].copy()
二维数组选择元素
多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的ndarray
省略索引导致降维
标量值和数组都可以被赋值给arr3[0]
多维数组的修改
切片索引
切片
一次传入多个切片
双切
选取第二行的前两列
选择第三列的前两行
“只有冒号”表示选取整个轴
将整数索引和切片混合
布尔型索引
假设我们有一个用于存储数据的数组以及一个存储姓名的数组(含有重复项)
布尔索引的简单应用
要选择除”Bob”以外的其他值,既可以使用不等于符号(!=),也可以通过~对条件进行否定。
布尔索引
花式索引
花式索引(Fancy indexing)是一个NumPy术语,它指的是利用整数数组进行索引。
生成索引
为了以特定顺序选取行子集,只需传入一个用于指定顺序的整数列表或ndarray即可
指定选取
使用负数索引将会从末尾开始选取行
负数表示倒序
一次传入多个索引数组会有一点特别。它返回的是一个一维数组,其中的元素对应各个索引元组。
arr = np.arange(32).reshape((8, 4))
# 里面的两个列表中前面的一个列表内的参数表示行数,后面的列表表示列数
arr[[1, 5, 7, 2], [0, 3, 1, 2]]
# 前面的一个列表根据里面列表的数字取行数生成新的列表,后面的列表在前面新生成的列表中继续操作
arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]
传入多个索引数组