花式索引
切片
import numpy as np
a = np.arange(10)
print("a:{}".format(a))
print("a[2:7:2]结果:{}".format(a[2:7:2]))
结果:
a:[0 1 2 3 4 5 6 7 8 9]
a[2:7:2]结果:[2 4 6]
解析:
- 索引范围是2到7(不包含7)
- 切片步长是2
- 最终结果:
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = a[1:3, 0:2]
print("a:{}".format(a))
print("b:{}".format(b))
结果:
a:[[1 2 3]
[4 5 6]
[7 8 9]]
b:[[4 5]
[7 8]]
解析:

索引
import numpy as np
a = np.arange(10, 20)
print("a:{}".format(a))
print("a[[1, 3, 6, 8]]结果:{}".format(a[[1, 3, 6, 8]]))
结果:
a:[10 11 12 13 14 15 16 17 18 19]
a[[1, 3, 6, 8]]结果:[11 13 16 18]
解析:
- 逐个索引取数据
- 最终结果:
高级索引
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0, 2, 0], [0, 1, 1]]
print("x:{}".format(x))
print("y:{}".format(y))
结果:
x:[[1 2]
[3 4]
[5 6]]
y:[1 6 2]
解析:
- 按照索引值定位子元素
- 在上一步的基础上进一步定位
- 最终结果:
import numpy as np
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print('我们的数组x:')
print(x)
print('\n')
rows = [[0, 0], [3, 3]]
cols = [[0, 2], [0, 2]]
y = x[rows, cols]
print('这个数组的四个角元素是:')
print(y)
我们的数组x:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
这个数组的四个角元素是:
[[ 0 2]
[ 9 11]]
解析:
- 按索引位逐个取值
- 最终结果: