Numpy数据处理

numpy是第三方库,处理数据需要导入numpy模块

import numpy as np

三种生成整数np.array的方式,其中第三种以后经常用到

a=np.array([1,2,3,4,5,6]) #添加一列列表

b=np.array(range(1,6)) #生成一列列表

c=np.arange(1,6) #numpy自动生成一列列表

print©

–out

[1 2 3 4 5]

print(type©)

–out

<class ‘numpy.ndarray’>

生成数列,可以设置步长

t1=np.arange(1,12,3) #生成数组可以设置步长

print(t1.dtype) #查看数据类型

–out

int32

生成数列的默认类型为int32,也可以转化制定数值类型,当数据很大时,可以节约存储空间

t1=np.arange(1,12,3).astype(‘int64’) #设置数据类型

–out

int64

用三元表达式生成浮点数

t2=np.array([random.random() for i in range(10)]) #生成一列十个数的浮点数

print(t2)

–out

[0.5691895 0.11410617 0.6155716 0.40979205 0.16831827 0.0812214

0.90971581 0.49852578 0.90477656 0.01145582]

print(t2.dtype)

–out

float64

由于小数太多,我们可以用round函数,保留小数位数

t3=np.round(t2,2) #t2数列取两位小数

–out

[0.57 0.11 0.62 0.41 0.17 0.08 0.91 0.5 0.9 0.01]

数列的运算

t4=np.arange(12) #生成一列数组

–out

[ 0 1 2 3 4 5 6 7 8 9 10 11]

t5=np.arange(12,24) #生成一列数组

–out

[12 13 14 15 16 17 18 19 20 21 22 23]

t6=t4t52 #数列之间的计算

print(t6)

–out

[ 0 26 56 90 128 170 216 266 320 378 440 506]

还可以直接对数列数值进行计算

t6=t6+12

print(t6)

–out

[ 24 50 80 114 152 194 240 290 344 402 464 530]

把一维数据类型转化为多维数据类型

t7=t6.reshape((3,4)) #把一维向量数组转化为3行4列

print(t7)

–out

[[ 12 38 68 102]

[140 182 228 278]

[332 390 452 518]]

多维数据转为为一维数据类型

t8=t7.reshape((12,)) #把三行四列转化为一维向量

–out

[ 12 38 68 102 140 182 228 278 332 390 452 518]

用flatten多维数据转为为一维数据类型

t9=t7.flatten() #把三行四列转化为一维向量,flatten函数处理

printt9

–out

[ 12 38 68 102 140 182 228 278 332 390 452 518]

数据切片

t1=np.arange(12) #生成一列整数

t2=t1.reshape(3,4) #生成3行4列

print(t2)
–out

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

连续切片,提取数据

t3=t2[1:,:] #切片 取大于等于第二行的数据(连续)

–out

[[ 4 5 6 7]

[ 8 9 10 11]]

不连续切片提取数据

t3=t2[[0,2],:] #切片 取第一行和第三行的数据 (不连续)

–out

[[ 0 1 2 3]

[ 8 9 10 11]]

交叉点提取数据

t3=t2[[1,2],[1,2]] #点取值,取第二行第二列和第二行第三列交叉点的数

–out

[ 5 10]

#数值的修改

t2[[1,2],[1,2]]=0 #第二行第二列和第二行第三列交叉点的数赋值为0

–out

[[ 0 1 2 3]

[ 4 0 6 7]

[ 8 9 0 11]]

布尔式修改数据

t2[t2>6]=0 #把t2列表中大于6的数修改为0

–out

[[0 1 2 3]

[4 0 6 0]

[0 0 0 0]]

#clip裁剪

t1=np.arange(8,32).reshape(4,6) #生成4行6列的8到32的自然数列

print(t1)

–out

[[ 8 9 10 11 12 13]

[14 15 16 17 18 19]

[20 21 22 23 24 25]

[26 27 28 29 30 31]]

t2=t1.clip(15,20) #剪裁,把小于15的数替换成15,大于20的数替换成20

print(t2)

–out

[[15 15 15 15 15 15]

[15 15 16 17 18 19]

[20 20 20 20 20 20]

[20 20 20 20 20 20]]

#拼接数据列表
np.vstack((t1,t2)) #竖直拼接

–out

[[ 8 9 10 11 12 13]

[14 15 16 17 18 19]

[20 21 22 23 24 25]

[26 27 28 29 30 31]

[15 15 15 15 15 15]

[15 15 16 17 18 19]

[20 20 20 20 20 20]

[20 20 20 20 20 20]]

np.hstack((t1,t2)) #水平拼接

–out

[[ 8 9 10 11 12 13 15 15 15 15 15 15]

[14 15 16 17 18 19 15 15 16 17 18 19]

[20 21 22 23 24 25 20 20 20 20 20 20]

[26 27 28 29 30 31 20 20 20 20 20 20]]

发布了2 篇原创文章 · 获赞 2 · 访问量 22

猜你喜欢

转载自blog.csdn.net/J2DM9968/article/details/104396792