numpy索引和切片
print(t2)
# [[4394029 320053 5931 46245]
# [7860119 185853 26679 0]
# [5845909 576597 39774 170708]
# ...
# [ 142463 4231 148 279]
# [2162240 41032 1384 4737]
# [ 515000 34727 195 4722]]
取行
单独取一行
# 取所有列的第3行(第3行的索引是2)
print(t2[2]) # [5845909 576597 39774 170708]
print(t2[2,:]) # [5845909 576597 39774 170708]
取连续多行
# 取所有列的2-3行(索引1为第2行,索引3为第4行,此为前闭后开区间)
print(t2[1:3,:]) # [[7860119 185853 26679 0]
# [5845909 576597 39774 170708]]
# 取所有列的第2行至最后
print(t2[1:,:]) # [[7860119 185853 26679 0]
# [5845909 576597 39774 170708]
# [2642103 24975 4542 12829]
# ...
# [ 142463 4231 148 279]
# [2162240 41032 1384 4737]
# [ 515000 34727 195 4722]]
取不连续多行
# 取所有列的1,3,5行
print(t2[[0,2,4],:]) # [[4394029 320053 5931 46245]
# [5845909 576597 39774 170708]
# [1168130 96666 568 6666]]
取列
单独取一列
# 取所有行的第2列
print(t2[:,1]) # [320053 185853 576597 ... 4231 41032 34727]
取连续多列
# 取所有行的第2-3列(索引1表示第2列,索引3表示第4列,前闭后开区间)
print(t2[:,1:3]) # [[320053 5931]
# [185853 26679]
# [576597 39774]
# ...
# [ 4231 148]
# [ 41032 1384]
# [ 34727 195]]
# 取所有行的第2至最后一列
print(t2[:,1:]) # [[320053 5931 46245]
# [185853 26679 0]
# [576597 39774 170708]
# ...
# [ 4231 148 279]
# [ 41032 1384 4737]
# [ 34727 195 4722]]
取不连续多列
# 取所有行的第2,4列
print(t2[:,[1,3]]) # [[320053 46245]
# [185853 0]
# [576597 170708]
# ...
# [ 4231 279]
# [ 41032 4737]
# [ 34727 4722]]
取行和列
取指定单一行和列
# 取第2行第3列
a = t2[1,2]
print(a) # 26679
print(type(a)) # <class 'numpy.int32'> # 注意这里的类型不是简单的int
取多行和多列
b = t2[1:3,2:4]
print(b) # [[ 26679 0]
# [ 39774 170708]]
print(type(b)) # <class 'numpy.ndarray'>
取多个不相邻的数
## 取多个不相邻的点
# 选出来的结果是(0,0),(2,1),(1,2)
c = t2[[0,2,1],[0,1,2]]
print(c) # [4394029 576597 26679]
print(type(c)) # <class 'numpy.ndarray'>
总结
1、t [ , ] 逗号前面指选取的行,逗号后面指选取的列;
2 、冒号(:)前后都没有跟数字说明全选整个行或整个列(如 print(t2[:,1]));冒号前有数字X后没有数字,指从X行(列)直到最后(如 print(t2[:,1:]))
3、[ x:y] 是一个前闭后开区间,索引值y对应的行或列实际拿不到