代码演示:
numpy中的索引也是从零开始,切片表示方法和列表中的方法基本相同
首先创建一个10*10二维数组t2:
t2 = np.arange(100).reshape(10,10)
import numpy as np
t2 = np.arange(100).reshape(10,10)
print(t2)
t2数组如下
[[ 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]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
取行操作
例如取t2的第三行:t2[2]
print(t2[2])
结果如下,就是将第三行数据打印输出
[20 21 22 23 24 25 26 27 28 29]
例如取连续的多行,从第三行取到最后:t2[2:]
print(t2[2:])
结果如下:
[[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
亦或者取不连续的多行,例如取第三行第九行第十行,则用如下形式来写:t2[[2,8,9]]
print(t2[[2,8,9]])
结果如下:
[[20 21 22 23 24 25 26 27 28 29]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
或者通过轴来取,二维数组有0轴和1轴:
**t2[1,:]**例如这样的形式,逗号前面代表行(0轴),逗号后面代表列(1轴)。
print(t2[1,:]) # 代表取第二行
print(t2[2,:]) # 代表取第三行
结果分别是:
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
或者以轴的方式来取不连续的行
print(t2[[2,8,9],:]) # 代表取第三九十行
结果则是第三行第九行和第十行:
[[20 21 22 23 24 25 26 27 28 29]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
取列操作
同样以轴的形式来取列
例如取第一列:t2[:,0] 则是0轴为:,1轴为0
print(t2[:,0])
结果如下:
[ 0 10 20 30 40 50 60 70 80 90]
取连续的多列:
print(t2[:,2:])
结果如下:第三列到第十列的数据
[[ 2 3 4 5 6 7 8 9]
[12 13 14 15 16 17 18 19]
[22 23 24 25 26 27 28 29]
[32 33 34 35 36 37 38 39]
[42 43 44 45 46 47 48 49]
[52 53 54 55 56 57 58 59]
[62 63 64 65 66 67 68 69]
[72 73 74 75 76 77 78 79]
[82 83 84 85 86 87 88 89]
[92 93 94 95 96 97 98 99]]
同样也可以取不连续的多列
print(t2[:,[0,2]]) # 取第一列和第三列
结果:
[[ 0 2]
[10 12]
[20 22]
[30 32]
[40 42]
[50 52]
[60 62]
[70 72]
[80 82]
[90 92]]
取多行和多列
由于是二维数组,所以0轴和1轴都取到具体的值的话,那么结果则是具体的数据
例如取第三行第四列的数据:
print(t2[2,3])
结果则是具体的值:
23
再例如取第三行到第五行,第二列到第四列
print(t2[2:5,1:4])
结果是这样:
[[21 22 23]
[31 32 33]
[41 42 43]]
取到的数据是交叉点的位置,如下图所示:
取多个不相邻的点
print(t2[0,2],t2[0,1]) # 直接取值
print(t2[[0,2,1],[1,2,3]])
# 取到三个值,分别是t2[0,1] t2[2,2] t2[1,3]多对应的值
结果就是俩个具体的值
2 1
[ 1 22 13]