numpy索引和切片——超详细讲解

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对应的行或列实际拿不到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值