索引
#基础索引
##一维数组
语法
np01[index]
根据索引查询 np01[index]
根据索引修改数据 np01[index]=值
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[行][列]
查询和修改数据
根据索引查询 np01[行][列]
根据索引修改数据 np01[行][列]=值
np01 = np.arange(20).reshape(4,5)
print("源数组为")
print(np01)
print(np01[0,2])#第一行第三列的数据
print(np01[1,:])#第二行的所有列
print(np01[:,0])#所有行的第一列
print(np01[1:3,2:4])#行2到4行就是第2、3行,列第三列到第5列,就是第3、4列
np01[1,3] =100 #第2行第4列的数据修改为100
print("源数组为")
print(np01)
#高级索引
一维数组
一维数组的高级索引
直接拿数组定义需要具体到那个数据
np01 = np.arange(20)
print("源数组为")
print(np01)
np02 = np.array([1,3,8])
print(np02)
print(np01[np02]) #[1 3 8]
二维数组
可以通过列表的写法,具体到那个数据
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列
#布尔索引
布尔索引补更改原数组,创建的都是原数组的副本
1,一维数组
利用布尔索引获取值
1.flase,不获取 true:获取
2.和比较运算符结合使用
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)
2,二维数组
np.ix_(行布尔索引,列布尔索引) 计算笛卡尔乘积
np02[笛卡尔乘积]
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)
切片
#一维数组
切片:
一正一负,一负一正,左开右闭,从左到右有区间
语法:np01[index_01 : index_02]
np01=np.array([1,3,5,7,9,2,4,6,8,4])
print(np01[1:6])
print(np01[-9:-4])
print(np01[1:-4])
print(np01[-9:6])
#二维数组
切片:
语法:np01[行_01 : 列_02,行_01 : 列_02]
如果想要查询所有的行和列,可以直接写 :
list01=[
[1,5,6,7],
[1,2,3,4],
[9,8,7,5],
[7,6,5,9]
]
np02=np.array(list01)
print(np02[:,1:3])
print(np02[-2:,-2:])