前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python数据科学库】Numpy从入门到精通

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

原创
作者头像
小小程序员
修改2022-11-26 11:22:33
5180
修改2022-11-26 11:22:33
举报

Numpy库

基础

创建矩阵

代码语言:javascript
复制
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))
代码语言:javascript
复制
[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'>

数据类型

代码语言:javascript
复制
#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)
代码语言:javascript
复制
[ 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矩阵元素为小数

代码语言:javascript
复制
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)
代码语言:javascript
复制
[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矩阵的形状

代码语言:javascript
复制
#矩阵的形状
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)
代码语言:javascript
复制
(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矩阵的运算

代码语言:javascript
复制
#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)
代码语言:javascript
复制
[ 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为矩阵)

代码语言:javascript
复制
a.transpose()
a.T
a.swapaxes(1,0)#参数为taxi

numpy布尔索引

代码语言:javascript
复制
a=a<10 返回元素为bool值的矩阵。
小于10为true,大于等于10为false
 a[a<10]=0 把矩阵中小于10的元素改为0

numpy的三元运算符

代码语言:javascript
复制
np.where(a<x,x1,x2) 小于x的改为x1,大于等于x改为x2

numpy的裁剪clip

代码语言:javascript
复制
a.clip(a,b)小于a的替换为a,大于b的替换为b

numpy的拼接

竖直拼接
代码语言:javascript
复制
np.vstack((a,b)) a,b为两个矩阵
水平拼接
代码语言:javascript
复制
np.hstack((a,b)) a,b为两个矩阵

numpy矩阵行列交换

代码语言:javascript
复制
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
代码语言:javascript
复制
a.sum(axis=None)
均值mean
代码语言:javascript
复制
np.mean(a,axis=None) 求a的均值
中值median
代码语言:javascript
复制
np.median(a,axis=None) 求a的中值
最大值max
代码语言:javascript
复制
a.max(axis=None)
最小值min
代码语言:javascript
复制
a.min(axis=None)
标准差sid 标准差越大代表数据跟平均值间波动越大
代码语言:javascript
复制
a.sid(axis=None)

numpy创建0 1矩阵

创建全0矩阵
代码语言:javascript
复制
np.zeros((x,y)) 创建一个x*y的全0矩阵
创建全1矩阵
代码语言:javascript
复制
np.zeros((x,y)) 创建一个x*y的全1矩阵
创建对角线为1的方阵
代码语言:javascript
复制
np.eye(x) 创建对角线为1的x\*x方阵

numpy随机生成数

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

numpy copy和view

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

numpy nan的注意点

代码语言:javascript
复制
两个nan互不相等 np.nan!=np.nan

count=np.count_nonzero(a!=a) 返回矩阵中nan个数

np.isnan(a)判断矩阵元素是否为nan 返回bool矩阵

nan与任何值计算都为nan

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Numpy库
    • 基础
      • 创建矩阵
      • 数据类型
      • numpy矩阵元素为小数
      • numpy矩阵的形状
      • numpy矩阵的运算
    • 进阶
      • numpy的转置(假设a为矩阵)
      • numpy布尔索引
      • numpy的三元运算符
      • numpy的裁剪clip
      • numpy的拼接
      • numpy矩阵行列交换
      • numpy常用统计函数
      • numpy创建0 1矩阵
      • numpy随机生成数
      • numpy copy和view
      • numpy nan的注意点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档