Python知识普及Numpy基础操作

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

[]

[]

[[]

[]]




转载请注明:http://www.aierlanlan.com/rzfs/2525.html