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]]