x = np.arange(1, 13) print(x[1])
21、2 多维数组
x = np.arange(1, 13).reshape(3, 4) print(x[1]) print(x[1][1]) #x[1,1]
[5 6 7 8] 62、 切片索引 2、1 多维数组
可以用冒号代替某一行/列的所有值。
x = np.arange(1, 13).reshape(3, 4) print(x[2, :]) print(x[:, 1])
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] [ 9 10 11 12] [ 2 6 10]
选取某几行某几列。
print(x[1, 2:4])
[7 8]3、 索引数组
根据索引数创建一个数组,其中每个数值由被索引数组中对应的值所替换。
3、1 一维数组允许使用负值。
print(x[np.array([2, 5, 8, 10])]) print(x[np.array([2, 5, -5, 10])])
[ 3 6 9 11] [ 3 6 8 11]3、2 多维数组
print(x[np.array([0, 1, 2]), np.array([0, 1, 2])])
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] [ 1 6 11]
只进行部分索引时:
print(x[np.array([0, 1, 2])])
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
索引数组可以与标量相结合:
print(x[np.array([0, 1, 2]), 1])
[ 2 6 10]4、 布尔索引 4、1 索引维数与数组维数相同
y = x > 10 print(y) print(x[y])
[[False False False False] [False False False False] [False False True True]] [11 12]4、2 索引维数小于数组维数
一维索引维数需要与二维数组的行数相匹配,二位索引维数需要与三维数组的行列数相匹配。
y = x > 6 print(y[:, 2]) print(x[y[:, 2]])
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] [False True True] [[ 5 6 7 8] [ 9 10 11 12]]
a = np.arange(30).reshape(2, 3, 5) b = np.array([[True, True, False], [False, True, True]]) print(a[b])
[[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] [[15 16 17 18 19] [20 21 22 23 24] [25 26 27 28 29]]] [[ True True False] [False True True]]5、 索引数组与切片相结合
print(x[np.array([0, 2]), 1:3])
[[ 2 3] [10 11]]6、 索引数组与布尔相结合
y = x > 6 print(x[y[:, 2], 1:3])
[[ 5 6 7 8] [ 9 10 11 12]] [[ 6 7] [10 11]]



