数组的索引和切片

#数索引机制

#基础索引
##一维数组的索引
1.可正可负  左开右闭  一正一负
2.和String的索引有点像

np01 = np.arange(10)#[0,1,2,3,4,5,6,7,8,9]
print(np01[4])#索引是4的数据
print(np01[0:4])
print(np01[-7:-1])
print(np01[7:-1])
print(np01[0:4:2])

#高级索引
##一维数组的高级索引
直接那数组定义需要具体到那个数据


np01 = np.arange(20)
print("源数组为")
print(np01)
np02 = np.array([1,3,8])
print(np02)
print(np01[np02]) 

##二维数组的高级索引
可以通过列表的写法,具体到那个数据
1.语法:np01[数组,数组] 精确到行数,直接使用数组定义到行数和列数
2.语法:np01[[行],[列]],利用list精确到行数和列数
3.语法:np01[元组,索引],利用索引获取多个数值。#第一行和第四行,第第3列到第6列
4.语法:np01[数组,列表]  np01[列表,数组] 混合使用 

np01 = np.arange(20).reshape(4,5)
print("源数组为")
print(np01)
np02 = np.array([1,3])#第二行和四行
print(np01[np02])
print(np01[np02,np02])#第二行和四行 第2列和第4列

np01 = np.arange(20).reshape(4,5)
print("源数组为")
print(np01)
print(np01[[0,1],[2,3]]) #(0,2)(1,2)位置的数据
#以上是获取单个数据,如果想要获取一个矩阵的怎么办
print(np01[(0,3),2:5]) #第一行和第四行,第第3列到第6列

np02 = np.array([1,3])#第二行和四行
print(np01[np02,[1,2]])#第二行和四行 第2列和第3列
print(np01[[1,2],np02])#第2行和3行 第2列和第4列

#布尔索引

布尔索引补更改原数组,创建的都是原数组的副本

#一维数组
import numpy as np
np01 = np.arange(20)
np02 = np01>10#拿到一个布尔数组,要是大于10就返回true要是小于10就返回false
print(np01)
print(np02)
#可以根据布尔获取矩阵中大于10的数据
np03 = np01[np02]
print(np03)
import numpy as np
np01 = np.arange(20).reshape(4,5)
print("源数组")
print(np01)
rows = [True,False,True,False] #相当于拿到第1、3行数据
np02 = np01[rows,:]
print(np02)
#拿到(0,2) (2,4) 第一行第3列,第3行第5列
cos = [False,False,True,False,True]
np03 = np01[rows,cos]
print(np03)
#(0,2)(0,3)(2,2)(2,3)
coss = np.array([False,False,True,True,False])
np04 = np01[np.ix_(rows,coss)]
np05 = np01[(0,2),2:4]
print(np04)
print(np05)

#一维数组的切片

语法[start:stop:step]

list01= [1,2,3,4,5]
np01 = np.array(list01,dtype="int32")
print(np01)
#正向索引切片
print(np01[:])#从0到0
print(np01[3:])#从3开始到结尾
print(np01[:5])#从0开始到5结尾
print(np01[1:5:2])#步长是2

#反向索引切片
print(np01[::-1])#-1证明是反向获取
print(np01[-5:-2])

#正负一起使用
print(np01[-5:4]) #[1 2 3 4]

#二维数组的切片

[对行进行切片,对列的切片]
对行的切片:可以有start:stop:step
对列的切片:可以有start:stop:step

#创建二维数组
list01= [
    [1,2],
    [3,4],
    [5,6],
    [7,8]
]
np01= np.array(list01)
print(np01)
print(np01[:,:])#所有行所有列
#所有行部分列
print(np01[:,1])#所有行第二列
print(np01[:,0:2])#所有行的第一列和第二列

#部分列所有行
print(np01[1,:])#获取第二行所有列
print(np01[0:2,:])#获取第一和二行所有列
print(np01[::2,:])#获取奇数行所有列

#部分行部分列
print(np01[1,1])#第二行第二列

#组合使用的时候改怎么办
#获取第三行第二列(6),第四行第一列(7)
#行写成元组放在前面,列写成元组放在后面
a= np01[(2,3),(1,0)]
print(a)

#负索引的使用
print(np01[-1])#最后一行
print(np01[::-1])#行倒序
print(np01[::-1,::-1])#行倒序,列倒叙

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值