【Python数据科学库】Numpy从入门到精通

Numpy库

基础

创建矩阵

  • import numpy as np
  • a1=np.array([1,2,3,4,5,6,7])
  • print(a1)
  • print(type(a1))
  • a2=np.array(range(10))
  • print(a2)
  • print(type(a2))
  • a3=np.arange(10)
  • print(a3)
  • print(type(a3))
  • [1 2 3 4 5 6 7]
  • <class 'numpy.ndarray'>
  • [0 1 2 3 4 5 6 7 8 9]
  • <class 'numpy.ndarray'>
  • [0 1 2 3 4 5 6 7 8 9]
  • <class 'numpy.ndarray'>

数据类型

  • #numpy的数据类型
  • #1.默认数据类型
  • a4=np.array(range(1,11))
  • print(a4)
  • print(a4.dtype)
  • #2.设置数据类型
  • a5=np.array(range(1,11),dtype="int64")
  • print(a5)
  • print(a5.dtype)
  • a6=np.array([1,1,1,0,0,0,1],dtype="bool")
  • print(a6)
  • print(a6.dtype)
  • [ 1 2 3 4 5 6 7 8 9 10]
  • int32
  • [ 1 2 3 4 5 6 7 8 9 10]
  • int64
  • [ True True True False False False True]
  • bool

numpy矩阵元素为小数

  • import random
  • #numpy中的小数
  • #1.随机生成小数矩阵
  • a7=np.array([10*random.random() for i in range(10)])
  • print(a7)
  • print(a7.dtype)
  • #2.保留小数点后n位
  • a8=np.round(a7,2)
  • print(a8)
  • print(a8.dtype)
  • [6.46665436 7.30882277 4.49303366 9.98697614 4.21035976 2.56750555
  • 4.63963177 9.07470549 9.73631922 7.11534145]
  • float64
  • [6.47 7.31 4.49 9.99 4.21 2.57 4.64 9.07 9.74 7.12]
  • float64

numpy矩阵的形状

  • #矩阵的形状
  • t1=np.array([1,2,3,4,5,6])
  • print(t1.shape)
  • t2=np.array([[1,2,3],[4,5,6]])
  • print(t2.shape)
  • t3=np.array([[[1,2,3],[4,5,6]],[[5,6,7],[8,9,10]]])
  • print(t3.shape)
  • t4=t3.reshape(3,4)#行*列必须等于矩阵元素个数 reshape()返回的是一个矩阵
  • print(t4)
  • t5=np.arange(24).reshape(2,3,4)
  • print(t5)
  • #多维矩阵的行列数t5.shape[0] t5.shape[1] t5.shape[2]
  • #多维转1维
  • #1.reshape
  • t6=t5.reshape(t5.shape[0]*t5.shape[1]*t5.shape[2])
  • print(t6)
  • #2.flatten
  • t7=t5.flatten()
  • print(t7)
  • (6,)
  • (2, 3)
  • (2, 2, 3)
  • [[ 1 2 3 4]
  • [ 5 6 5 6]
  • [ 7 8 9 10]]
  • [[[ 0 1 2 3]
  • [ 4 5 6 7]
  • [ 8 9 10 11]]
  • [[12 13 14 15]
  • [16 17 18 19]
  • [20 21 22 23]]]
  • [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
  • [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

numpy矩阵的运算

  • #numpy的运算
  • #1.与整数运算
  • t7=t7+2
  • print(t7)
  • t7=t7*2
  • print(t7)
  • t7=t7/2
  • print(t7)
  • #t7=t7/0
  • #print(t7)#0/0=nan 实数/0=inf
  • #2.与矩阵运算
  • #加减计算
  • t7=t7.reshape(4,6)
  • t8=np.arange(6)
  • t8=t7-t8
  • print(t8)
  • t9=np.arange(4).reshape(4,1)
  • t9=t7-t9
  • print(t9)
  • #乘除
  • t10=np.array(range(1,5)).reshape(4,1)
  • t10=t7/t10
  • print(t10)
  • [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25]
  • [ 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50]
  • [ 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
  • 20. 21. 22. 23. 24. 25.]
  • [[ 2. 2. 2. 2. 2. 2.]
  • [ 8. 8. 8. 8. 8. 8.]
  • [14. 14. 14. 14. 14. 14.]
  • [20. 20. 20. 20. 20. 20.]]
  • [[ 2. 3. 4. 5. 6. 7.]
  • [ 7. 8. 9. 10. 11. 12.]
  • [12. 13. 14. 15. 16. 17.]
  • [17. 18. 19. 20. 21. 22.]]
  • [[2. 3. 4. 5. 6. 7. ]
  • [4. 4.5 5. 5.5 6. 6.5 ]
  • [4.66666667 5. 5.33333333 5.66666667 6. 6.33333333]
  • [5. 5.25 5.5 5.75 6. 6.25 ]]

进阶

numpy的转置(假设a为矩阵)

  • a.transpose()
  • a.T
  • a.swapaxes(1,0)#参数为taxi

numpy布尔索引

  • a=a<10 返回元素为bool值的矩阵。
  • 小于10true,大于等于10false
  • a[a<10]=0 把矩阵中小于10的元素改为0

numpy的三元运算符

  • np.where(a<x,x1,x2) 小于x的改为x1,大于等于x改为x2

numpy的裁剪clip

  • a.clip(a,b)小于a的替换为a,大于b的替换为b

numpy的拼接

竖直拼接

  • np.vstack((a,b)) a,b为两个矩阵

水平拼接

  • np.hstack((a,b)) a,b为两个矩阵

numpy矩阵行列交换

  • a[[x,y],:]=a[[y,x],:] x,y为交换的两行
  • a[[1,2],:]=a[[2,1],:]
  • a[:,[x,y]]=a[:,[y,x]] x,y为交换的两列
  • a[:,[1,2]]=a[:,[y,x]]

numpy常用统计函数

求和sum

  • a.sum(axis=None)

均值mean

  • np.mean(a,axis=None) 求a的均值

中值median

  • np.median(a,axis=None) 求a的中值

最大值max

  • a.max(axis=None)

最小值min

  • a.min(axis=None)

标准差sid 标准差越大代表数据跟平均值间波动越大

  • a.sid(axis=None)

numpy创建0 1矩阵

创建全0矩阵

  • np.zeros((x,y)) 创建一个x*y的全0矩阵

创建全1矩阵

  • np.zeros((x,y)) 创建一个x*y的全1矩阵

创建对角线为1的方阵

  • np.eye(x) 创建对角线为1的x\\*x方阵

numpy随机生成数

  • .random.rand(d0,d1,...dn)创建d0...dn维度均为分布的随阵,浮点数(0-1))
  • .random.randn(d0,d1,...dn)创建d0...dn维度标准正太分布的随阵,浮点数 平均数0,标准差1)
  • .random.ranint(low,high,(shape))给定上下限随机整数范围为lowhigh,形状是shape
  • .random.uniform(low,high,(size))产生有均匀分布的矩阵low为起始值,high为结束值,size为形状
  • .random.normal(loc,scale,(size))从正态分布中随机抽取样本,分布中心是loc(均值),标准差是scale,形状是size
  • .random.seed(s) 随机数种子,s是给定种子值。每次产生相同值

numpy copy和view

  • a=b 相互影响 两个矩阵有一个改变另一个跟着改变
  • 视图 a=b[:] 一种切片,会创建新的对象a,但是a的数据由b保管,相互影响
  • a=b.copy(),复制,a和b互不影响

numpy nan的注意点

  • 两个nan互不相等 np.nan!=np.nan
  • count=np.count_nonzero(a!=a) 返回矩阵中nan个数
  • np.isnan(a)判断矩阵元素是否为nan 返回bool矩阵
  • nan与任何值计算都为nan
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
<<上一篇
下一篇>>