Numpy基础数据结构
创建数组
Numpy通用函数
importnumpyasnp
#reshape改变数组维度形状
ar1=np.arange(10)
print(ar1)
print()
print(ar1.reshape(5,2))#方式1
print()
ar1=np.ones((2,5))
print(ar1)
print()
ar1=np.ones((2,5)).reshape(5,2)#方式2
print(ar1)
print()
ar1=np.reshape(np.arange(9),(3,3))#方式3
print(ar1)
[]
[[01]
[23]
[45]
[67]
[89]]
[[1.1.1.1.1.]
[1.1.1.1.1.]]
[[1.1.]
[1.1.]
[1.1.]
[1.1.]
[1.1.]]
[[]
[]
[]]
#T数组转置
ar2=np.zeros((2,5))
print(ar2)
print()
print(ar2.T)
[[0.0.0.0.0.]
[0.0.0.0.0.]]
[[0.0.]
[0.0.]
[0.0.]
[0.0.]
[0.0.]]
#resize跟reshape类似区别是当改变数组维度时不会因数据量的不同而报错
ar3=np.reshape(np.arange(15),(3,5))
print(ar3)
print()
ar4=np.resize(ar3,(5,3))
print(ar4)
print()
ar5=np.resize(ar3,(3,4))#当改变后的数组需要的数据量比原数组的数据量少时会依次排序多余的数值不会显示
print(ar5)
print()
ar6=np.resize(ar3,(4,5))#当改变后的数组需要的数据量比原数组的数据量多时不足的会补充排序
print(ar6)
[[34]
[59]
[]]
[[]
[]
[]
[]
[]]
[[3]
[]
[8]]
[[34]
[59]
[]
[34]]
#np.resize(a,shape)有返回值不会改变原数组
ar7=np.arange(10)
print(ar7)
print()
ar8=np.resize(ar7,(2,5))
print(ar8)
print()
print(ar7)
[]
[[34]
[59]]
[]
#a.resize(shape)没有返回值直接改变原数组
ar7=np.arange(10)
print(ar7)
print()
ar8=ar7.resize(2,5)#注意ar8为None因为是改变原数组所以没有返回值
print(ar8)
print()
print(ar7)
[]
None
[[34]
[59]]
#数据类型转换astype
ar9=np.arange(10,dtype=np.float64)
print(ar9)
print(ar9.dtype)#查看数值类型
print()
ar10=ar9.astype(np.int64)#改变数值类型
print(ar10)
print(ar10.dtype)
[0.1.2.3.4.5.6.7.8.9.]
float64
[]
int64
#数组堆叠
#hstackvstack
a=np.arange(10)
print(a)
print()
b=np.arange(10,20)
print(b)
print()
c=np.hstack((a,b))#hstack表示横向连接
print(c)
print()
d=np.vstack((a,b))#vstack表示纵向连接
print(d)
print()
[]
[15]
[15]
[[]
[15]]
[[]
[15]]
#stack
print(a)
print()
print(b)
print()
e=np.stack((a,b),axis=0)#axis=0横向看(纵向连接)
print(e)
print()
e=np.stack((a,b),axis=1)#纵向看(横向连接)
print(e)
[]
[15]
[[]
[15]]
[[]
[]
[]
[]
[]
[]
[]
[]
[]
[]]
#数组拆分
a=np.arange(16).reshape(4,4)
print(a)
print()
b=np.hsplit(a,2)#按列来切割
print(b)
print()
c=np.vsplit(a,2)#按行来切割
print(c)
[[3]
[]
[8]
[15]]
[array([[0,1],
[4,5],
[8,9],
[12,13]]),array([[2,3],
[6,7],
[10,11],
[14,15]])]
[array([[0,1,2,3],
[4,5,6,7]]),array([[8,9,10,11],
[12,13,14,15]])]
#求和sum
a=np.arange(10).reshape(2,5)
print(a)
print()
print(np.sum(a,axis=0))#0代表横轴
print()
print(np.sum(a,axis=1))#1代表纵轴
[[34]
[59]]
[5793]
[]
#排序sort
print(np.sort(np.array([3,5,5,3,1,4])))
[135]
Numpy基本索引和切片
importnumpyasnp
#一维数组
arr=np.array(range(10))
print(arr)
print()
print(arr[4])
print(arr[:3])
print(arr[::2])
[]
4
[]
[]
#二维数组
arr=np.arange(20).reshape(4,5)
print(arr)
print()
print(arr[2])#取出某一行
print()
print(arr[2][2])#取出某一个数
print()
print(arr[1:3])#取出多行
print()
print(arr[2,2])#逗号前代表行逗号后代表列
print()
print(arr[:2,1:3])#取出多行多列
[[34]
[59]
[]
[15]]
[]
12
[[59]
[]]
12
[[12]
[67]]
#三维数组
arr=np.arange(48).reshape(3,4,4)#3个4行4列的数组
print(arr)
print(**30)
print(arr[2])
print(**30)
print(arr[2][1])
print(**30)
print(arr[2][1][1])
[[[3]
[]
[8]
[15]]
[[]
[20223]
[]
[]]
[[]
[]
[40243]
[]]]
******************************
[[]
[]
[40243]
[]]
******************************
[]
******************************
37
Numpy布尔型索引及切片
#用布尔型索引去做筛选
arr=np.arange(12).reshape(3,4)
print(arr)
print()
a=np.array([True,False,True])
print(a)
print()
b=np.array([True,False,False,True])
print(b)
print()
print(arr[a,:])
print()
print(arr[:,b])
[[3]
[]
[8]]
[TrueFalseTrue]
[TrueFalseFalseTrue]
[[3]
[8]]
[[03]
[47]
[]]
#用布尔型矩阵去做筛选
print(arr)
print()
m=arr5
print(m)
print()
n=arr[arr5]
print(n)
[[3]
[]
[8]]
[[FalseFalseFalseFalse]
[FalseFalseTrueTrue]
[TrueTrueTrueTrue]]
[]
Numpy随机数生成
importnumpyasnp
#random.normal正态分布随机数
print(np.random.normal(size=(4,4)))#生成一个4行4列的正态分布随机数
[[1.-0.-0.-0.]
[-0...-0.]
[1.-0.-0.-2.]
[-1.-0.-1..]]
#random.rand平均分布随机生成[0-1)之间的数
a=np.random.rand()#生成一个数
print(a)
print()
b=np.random.rand(4)#生成4个数
print(b)
print()
c=np.random.rand(2,4)#生成二维数组
print(c)
0.
[0....]
[[0.065350...]
[0.593230...]]
#np.random.randint在自定义的范围内随机生成整数
a=np.random.randint(3)#在[0-3)的范围内随机生成一个整数
print(a)
print()
b=np.random.randint(2,10)#[2-10)的范围内随机生成一个整数
print(b)
print()
c=np.random.randint(20,size=10)#生成一个[0-20)之间有10个整数元素的一维数组
print(c)
print()
d=np.random.randint(20,40,size=10)#生成一个[20-40)之间有10个整数元素的一维数组
print(d)
print()
e=np.random.randint(40,50,size=(2,5))#生成一个[40-50)之间有2行5列元素的二维数组
print(e)
6
[]
[]
[[]
[]]