【numpy学习】numpy教程--基于莫烦python的教程
numpy
本套教程是基于莫烦python的教学视频记录的学习笔记,每一部分都是一个可运行的python代码块,可以直接拷贝运行,并且知识点都有清晰地注释
0、作用
使用numpy&pandas使得数据分析中计算非常快,比python自带的字典和列表快很多,因为这俩模块使用C语言编写的。应用到了矩阵的运算,使用C语言实现,更快。
1、安装
直接在终端使用命令
pip install numpy
安装完成即可
2、numpy基本属性
基本属性包括:将列表转换为numpy的array,查看array的维度、形状、总元素个数
import numpy as np #一般习惯重命名为np
# 将列表转换为numpy的矩阵
array = np.array([[1,2,3],[2,3,4]])
print(array)
# 维度
print('number of dimation: ',array.ndim)
# 形状
print('shape:',array.shape)
# 总共多少个元素在矩阵中
print('size:',array.size)
3、创建
创建的方法有:
- 直接传入列表
- 通过zeros()方法生成全为0的矩阵
- 通过ones()方法生成全为1的矩阵
- 通过empty()方法生成全为0的矩阵
- 通过arange()方法生成有序array
- 使用reshape指定形状,注意,元素个数可以变成指定的形状否则报错
- linspace分段
- 使用random模块,生成随机的。随机数位于0到1之间
import numpy as np
# 1,直接传入列表,使用的type指定数据类型,比如float32,几位数字需要根据精度需求来确定
# 位数越大,精度越高但同时占用空间越大
a = np.array([[2,3,4],[3,4,5]],dtype=np.float32)
# 打印出来,和列表的差别就是,没有逗号
print(a)
print(a.dtype)# 2,直接生成全部为0的矩阵,需要在参数中传入形状(用一个括号包着)
# 如果不指定数据类型,zeros默认为float64
b = np.zeros((3,4))
print(b)
# 同理,生成全为1的,使用ones方法即可
b = np.ones((4,5),dtype=np.int16)
print(b)# 3,empty,相当于生成全为0的
c = np.empty((3,4))
print(c)# 4,生成有序,和python中的arange相同,指定区间(左闭右开),指定步长
# 步长为2,10到20之间
c = np.arange(10,21,2)
print(c)# 5,使用reshape指定形状,注意,元素个数可以变成指定的形状否则报错
c = np.arange(12).reshape((3,4))
print(c)# 6,linspace分段,在闭区间1到10中生成5个点,平均分成4段
a = np.linspace(0,10,5)
print(a)# 7、使用random模块,生成随机的。随机数位于0到1之间
a = np.random.random((2,4))
print(a)
4、运算
- 加法、减法、指数运算、三角函数运算、布尔值运算。都是对每个元素都进行运算
- 矩阵乘法
- 逐个元素相乘
- 使用dot方法矩阵相乘(线性代数的知识)
- 求和,求最大值最小值,都是返回一个指定的元素
- 求指定维度的和、最大最小值,需要根据axis指定维度
import numpy as np
a = np.array([10,20,30,40])
b = np.arange(4)
print(a,b)
# 1、减法
print(a-b)
# 2、加法
print(a+b)
# 3、指数
print(a**2)
# 4、三角函数运算
# print(np.sin(a),np.cos(a),np.tan(a))
# 5、布尔值
print(b)
print(b<3)
print(b==3)############矩阵###########
a = np.array([[10,20],[30,45]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)
# 乘法,逐个相乘
print(a*b)
# 乘法,矩阵相乘,使用np.dot或者a.dot(b)
print(np.dot(a,b))
print(a.dot(b))# 随机生成一个矩阵
a = np.random.random((2,4))
print(a)
# 求和,或者写成a.sum()
print(np.sum(a))
# 最大值
print(np.max(a))
# 最小值
print(np.min(a))
# 求指定维度的和,最大最小值
# axis为1,就是将维度为1的元素累加,该维度消失,只剩下维度为0的行
print(np.sum(a,axis=1))
print(np.max(a,axis=1))
print(np.min(a,axis=0))
# 另一种写法
print(a.min(axis=0))
# 总结,axis的值为求和的维度,运算之后该维度消失
5、运算2
- 求最小最大值索引
- 求平均值,指定维度求平均值
- 求中位数
- 累加,第n个元素为原矩阵前n个元素的和
- 累差,原矩阵相邻元素之间的差值,列数减一
- 找出非0的元素,返回的值是多个表示非零元素的维度数组,数组拼接即可得到非零元素的索引值
- 排序,按照最小的维度排序,对于矩阵就是对行内的列元素排序
- 转置矩阵
import numpy as np
A = np.arange(2,14).reshape((3,4))
print(A)
# 最小值索引,两种写法都可
print(np.argmin(A))
print(A.argmin())
# 最大值索引
print(A.argmax())
# 求平均值
print(A.mean())
# 也可以指定维度
print(np.mean(A,axis=0))
print(np.average(A))
# 不能这样使用average
# print(A.average())# 求中位数,也是只能np.median
print(np.median(A))
# 累加,第n个元素为原矩阵前n个元素的和
print(np.cumsum(A))
# 累差,原矩阵相邻元素之间的差值,列数减一了,因为n个元素有n-1个差值
print(np.diff(A))
# 找出非零元素,返回维度的数组
print(np.nonzero(A))# 排序,最小的那个维度的数进行排序。如果是矩阵,就是行内的每列元素进行排序
B = np.arange(14,2,-1).reshape((3,4))
print(B)
# 不会改变原矩阵的值
print(np.sort(B))# 矩阵的转置,行变成列,列变成行
print(np.transpose(B))
print(B.T)
print((B.T).dot(B))# clip,所有大于9的数都变成9,小于5的数都变成5,5到9之间的数不变
print(B)
print(np.clip(B,5,9))
6、索引
- 对于多维的索引,索引号都放在一个中括号中,用逗号分割开
- 切片
- for迭代,默认迭代矩阵的行
import numpy as npA = np.arange(3,15).reshape((3,4))
print(A)
print(A[2])
print(A[2][1])
# 多维索引都放在一个中括号中,用逗号分割
print(A[2,1])# 切片
# 第一维度所有元素,就是原矩阵
print(A[:])
# 第一维度不限定,第二维度索引为1
print(A[:,1])
# 切片限定第二维度(列)
print(A[1,1:3])
print("********************")# for迭代,默认迭代矩阵的行。就是第一维度
for row in A:print(row)
# 迭代矩阵的列,可以通过迭代转置矩阵的列
for col in A.T:print(col)
# 迭代每一个元素,flat之后是一个一维的列表
for item in A.flat:print(item,end=',')
7、array合并
- 使用vstack实现多个array上下合并
- 使用hstack实现多个array水平合并
- 把一个横向的数列变成纵向的数列
- 使用concatenate多个array的合并指定合并的维度
import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])# 上下合并
C = np.vstack((A,B))
print(C)
print(A.shape,C.shape)# 左右合并(水平合并) horizontal stack
D = np.hstack((A,B))
print(D)
print(A.shape,D.shape)print("*********************")
# 如何把一个横向的数列变成纵向的数列
A = A[:,np.newaxis]
B = B[:,np.newaxis]
print(A.shape,B.shape)
# 左右合并,hstack和vstack都可以进行多个array的合并
D = np.hstack((A,B,B))
print(D)# 多个array的合并指定合并的维度,和上面两个不同的就是可以指定合并的维度
# 比如,在第一维度合并,即合并行
C = np.concatenate((A,B,B,A),axis=0)
print(C)
# 合并列
print(np.concatenate((A,B,B,A),axis=1))
8、分割
- 使用split均等分割
- 使用array_split不均等分割
- 使用vsplit和hsplit进行均等分割
import numpy as npA = np.arange(12).reshape((3,4))
print(A)
# 均等分割,使用split均等分割
print(np.split(A,2,axis=1))
print(np.split(A,3,axis=0))# 不均等分割,使用array_split
# 这里将四列分为三部分,第一部分为2列,2,3部分为1列
print(np.array_split(A,3,axis=1))
# 使用vsplit和hsplit进行分割
print(np.vsplit(A,3))
print(np.hsplit(A,2))
9、copy和deep copy
- 通过 = 赋值的变量都指向同一个数据
- 使用copy方法使复制后两个变量不相关联
import numpy as np
a = np.arange(4)
print(a)
b = a
c = a
d = b
# 目前为止,abcd都是一样
# 这里更改a的值,观察其他变量的改变
a[0]=11
print(a,b,c,d)
print(b is a,c is a,d is a)
# 可以看到,改变了a,bcd都会改变,哪怕是通过b赋值的d
# 同理,改变了bcd任何一个元素,a的值也会改变
# 所以,通过=赋值的变量都是指向同一个数据,是浅拷贝# 如果想让赋值后的两个变量不相关联,使用copy()方法
e = a.copy()
print(e is a)
a[1]=22
print(a,e)
【numpy学习】numpy教程--基于莫烦python的教程相关推荐
- 莫烦Python[基础教程]
python基础教程一 安装 定义功能 函数参数 函数默认参数 可变参数 关键字参数 变量形式 模块安装 文件读取 文件读取1 文件读取2 文件读取3 Class类 input输入 元组.列表.字典 ...
- 莫烦python系列教程_莫烦python教程学习笔记——总结篇
一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...
- CNN识别手写数字-莫烦python
搭建一个 CNN识别手写数字 前面跟着莫烦python/tensorflow教程完成了神经网络识别手写数字的代码,这一part是cnn识别手写数字的 import tensorflow as tf f ...
- 【莫烦Python】Numpy教程
目录 前言 1.numpy属性 2.numpy的array创建 3.numpy的基础运算 4.numpy的基础运算2 5.numpy的索引 6.numpy的array合并 7.numpy的array分 ...
- 莫烦python教程下载_Python 有哪些好的学习资料或者博客?
Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...
- 【莫烦Python】Python 基础教程——学习笔记
文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...
- 【莫烦Python】Pandas教程
目录 前言 1.Pandas vs Numpy 2.基本介绍 3.选择数据 4.设置值 5.处理丢失的数据 6.pandas导入导出 7.pandas合并concat 8.pandas合并merge ...
- 【莫烦Python】Matplotlib Python画图教程
目录 前言 1.基本使用 1.1 基本用法 1.2 figure图像 1.3 设置坐标轴1 1.4 设置坐标轴2 1.5 Legend图例 1.6 Annotation标注 1.7 tick能见度 2 ...
- 莫烦Python NumpyPandas 学习笔记
莫烦Python Numpy&Pandas 学习笔记 原文(视频)地址:https://www.bilibili.com/video/BV1Ex411L7oT 1. 安装 numpy官方网站: ...
- 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
[莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...
最新文章
- 安装zookeeper集群
- Python 使用穷举法求两个数的最大公约数。
- 锋利的jQuery第2版学习笔记8~11章
- 如何在command中使用log
- java基础方法笔记
- 锐捷服务器有什么型号,锐捷管理服务器RG-RCMS-16
- Winform开发技术详解 - 应用环境 相关技术介绍
- jquery实现上下左右键盘监听_初识 jquery.simulate.js 模拟键盘事件
- 三维扫描仪[10]——如何设计一台云台式扫描仪(代码详解)
- 八卦在计算机应用,计算机编程在八卦图研究中的应用.doc
- OS monitor 项目
- php sendmail 抄送,Python发送邮件各种姿势
- 9张图揭秘:优秀的数据分析项目,这样做!
- 宝塔用ip+端口访问服务器时出现无法访问此网站
- order by语句使用
- 是寒冬还是风口?2015年HTML5游戏完整产业链报告
- 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?
- Septentrio:mosaic系列内置全功能Ntrip
- 4-10 阶乘计算升级版
- c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统报告(内含代码)...
热门文章
- hp原装usb无线打印服务器,从USB转换到无线 | 无线打印中心 | 惠普中国
- linux C++ socket编程 实例
- Java随笔记 - BIO Socket 编程实例
- jar包里面文件修改
- 如何选择网页更新提醒工具
- 一个简单的鼠标钩子程序
- 光盘版的DOS启动盘
- Ext.grid.EditorGridPanel点击单元格改变数据,动态添加列
- ctfmon是什么启动项_Windows7系统启动项里没有ctfmon.exe怎么办?
- dell服务器分区表修复,完美恢复原产Dell Recovery软件、修复环境(添加教程)