numpy学习笔记(莫烦python)
import numpy as np
numpy属性
array = np.array([[1,2,3],[2,3,4]])
print(array)
print(‘number of dim’,array.ndim)
print(‘shape:’,array.shape)
print(‘size’,array.size)
numpy的创建array
创建数组
a = np.array([2,23,4])
print(a)
指定数据
a = np.array([2,23,4],dtype=np.int)
print(a.dtype)
a = np.array([2,23,4],dtype=np.int32)
print(a.dtype)
a = np.array([2,23,4],dtype=np.float)
print(a.dtype)
a = np.array([2,23,4],dtype=np.float32)
print(a.dtype)
创建特定的数据
矩阵
a = np.array([[2,23,4],[2,32,4]])
print(a)
全零数组
a = np.zeros((3,4))
print(a)
创建全一数组,同时指定这些特定数据的dtype
a = np.ones((3,4),dtype=np.int)
a
创建全空数组,其实每个值都是接近零的数
a = np.empty((3,4))
a
用arange创建连续数组
a = np.arange(10,20,2)
a
用reshape改变数据的形状
a = np.arange(12).reshape((3,4))
a
用linspace创建线段型数据
a = np.linspace(1,10,20)
a
a = np.linspace(1,10,20).reshape((5,4))
a
Numpy基础运算1
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
a,b
numpy的几种基本运算
c=a-b
c
c=a+b
c
c=a*b
c
#乘方
c=b**2
c
数学工具,三角函数
c=10*np.sin(a)
c
除了函数应用外,在脚本中对print函数进行一些修改可以进行逻辑判断
print(b<3)
此时由于进行逻辑判断,
返回的是一个bool类型的矩阵,即对满足要求的返回True,不满足的返回False。
上述程序执行后得到的结果是[True True True False]。 需要注意的是,
#如果想要执行是否相等的判断, 依然需要输入 == 而不是 = 来完成相应的逻辑判断。
#上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,
如果我们想要对多行多维度的矩阵进行操作,需要对开始的脚本进行一些修改:
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)
稍显不同的是,Numpy中的矩阵乘法分为两种,
#其一是前文中的对应元素相乘,
#其二是标准的矩阵乘法运算,
#即对应行乘对应列得到相应元素:
矩阵乘法
c_dot = np.dot(a,b)
print(c_dot)
另一种dot的表示方法
c_dot_2 = a.dot(b)
print(c_dot_2)
sum(),min(),max()的使用
import numpy as np
a=np.random.random((2,4))
print(a)
np.sum(a)
np.min(a)
np.max(a)
查找运算
如果你需要对行或者列进行查找运算,
就需要在上述代码中为 axis 进行赋值。
当axis的值为0的时候,将会以列作为查找单元,
当axis的值为1的时候,将会以行作为查找单元。
print(“a =”,a)
print(“sum =”,np.sum(a,axis=1))
print(“min =”, np.min(a,axis=0))
print(“max =”,np.max(a,axis=1))
numpy基础运算2
有关索引的运算
import numpy as np
A = np.arange(2,14).reshape((3,4))
print(np.mean(A))
print(np.average(A))
模仿dot()的使用法则,mean()还有另一种写法
print(A.mean())
同样的,可以写出求解中位数的函数
#print(A.median()) # 用不了?
np.median(A)
和matlab中的cumsum()累加函数类似,Numpy中也具有cumsum()函数
print(np.cumsum(A))
累差运算的函数
print(np.diff(A))
#每一行中后一项与前一项之差。故一个3行4列矩阵通过函数计算得到的矩阵便是3行3列的矩阵。
nonzero()函数
print(np.nonzero(A))
#这个函数将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵。
#wo们可以对所有元素进行仿照列表一样的排序操作,
#但这里的排序函数仍然仅针对每一行进行从小到大排序操作:
import numpy as np
A = np.arange(14,2,-1).reshape((3,4))
print(A)
print(np.sort(A))
矩阵的转置有两种表示方法
print(np.transpose(A))
print(A.T)
特别的,numpy里面有clip()函数,例子如下
print(A)
print(np.clip(A,5,9))
Numpy索引
一维索引
类似 a[2] 的索引方法
import numpy as np
A = np.arange(3,15)
print(A[3])
print(A[0])
此时我们将矩阵转化成二维的,然后进行同样的操作
A = np.arange(3,15).reshape((3,4))
print(A[2])
此时对应的实际上是矩阵A从第三行(从0开始算)开始的所有元素
二维索引
A = np.arange(3,15).reshape((3,4))
A
print(A[1][1])
其他表示方法
print(A[1,1])
在python的list中,我们可以利用 : 对一定范围内的元素进行切片操作,
在numpy中我们依然可以给出相应的方法
print(A[1,1:3])
这一表示形式即针对第二行中第2到第4列元素进行切片输出(不包含第4列)。
此时我们适当的利用for函数进行打印
for row in A:
print(row)
此时他会逐行进行打印操作
如果想逐列进行打印,就需要稍微变化一下
for column in A.T:
print(column)
最后说一个关于逐代输出的问题
import numpy as np
A = np.arange(3,15).reshape(3,4)
print(A.flatten())
for item in A.flat:
print(item)
#这一脚本中的flatten是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。
而flat是一个迭代器,本身是一个object属性
numpy array合并
np.vstack() 上下合并
import numpy as np
A = np.array([1,1,1])
A
B = np.array([2,2,2])
B
print(np.vstack((A,B)))
#vertical stack本身属于一种上下合并,即对括号中的两个整体进行对应操作。此时我们对组合而成的矩阵进行属性探究:
C = np.vstack((A,B))
print(A.shape, C.shape)
np.hstack() 左右合并
D = np.hstack((A,B))
print(D)
print(A.shape,D.shape)
np.newaxis() 转置操作
#说完了array的合并,
#我们稍稍提及一下前一节中转置操作
#,如果面对如同前文所述的A序列,
#转置操作便很有可能无法对其进行转置(因为A并不是矩阵的属性),
#此时就需要我们借助其他的函数操作进行转置:
print(A[np.newaxis,:])
print(A[np.newaxis,:].shape)
print(A[:,np.newaxis])
print(A[:,np.newaxis].shape)
结合着上面的知识,我们把它综合起来:
import numpy as np
A = np.array([1,1,1])[:,np.newaxis]
A
B = np.array([2,2,2])[:,np.newaxis]
B
C = np.vstack((A,B))
C
D = np.hstack((A,B))
D
print(D)
print(A.shape,D.shape)
np.concatenate() 合并多个矩阵或序列
#当你的合并操作需要针对多个矩阵或序列时,借助concatenate函数可能会让你使用起来比前述的函数更加方便:
C = np.concatenate((A,B,B,A),axis=0)
C
print©
D = np.concatenate((A,B,B,A),axis=1)
D
print(D)
#axis参数很好的控制了矩阵的纵向或是横向打印,相比较vstack和hstack函数显得更加方便。
Numpy array 分割
创建数据
import numpy as np
A = np.arange(12).reshape((3,4))
print(A)
纵向分割
print(np.split(A,2,axis=1))
C,D = np.split(A,2,axis=1)
C,D
横向分割
print(np.split(A,3,axis=0))
错误的分割
范例的Array只有4列,只能等量对分,因此输入一下程序代码后python会报错
print(np.split(A,3,axis=1))
为了解决这种情况,我们会有下面这种方式
不等量的分割
print(np.array_split(A,3,axis=1))
其他的分割方式
print(np.vsplit(A,3)) # #等于 print(np.split(A, 3, axis=0))
print(np.hsplit(A,2))
Numpy copy & deep copy
= 的赋值方式会带有关联性
首先import numpy 并建立变量,给变量赋值
import numpy as np
a = np.arange(4)
b = a
c = a
d = b
改变a的第一个值,b,c,d,的第一个值也会随之改变
a[0]=11
print(a)
确定b, c, d, 与 a 是否相同
b is a
c is a
d is a
同样,改变d的值,a,b,c也会改变
d[1:3] = [22,33]
print(a)
print(b)
print©
copy的赋值方式没有关联性
b = a.copy()
print(b)
a[2] = 44
print(a)
print(b)
numpy学习笔记(莫烦python)相关推荐
- 【莫烦Python】Numpy教程
目录 前言 1.numpy属性 2.numpy的array创建 3.numpy的基础运算 4.numpy的基础运算2 5.numpy的索引 6.numpy的array合并 7.numpy的array分 ...
- 【莫烦Python】Pandas教程
目录 前言 1.Pandas vs Numpy 2.基本介绍 3.选择数据 4.设置值 5.处理丢失的数据 6.pandas导入导出 7.pandas合并concat 8.pandas合并merge ...
- 莫烦Python NumpyPandas 学习笔记
莫烦Python Numpy&Pandas 学习笔记 原文(视频)地址:https://www.bilibili.com/video/BV1Ex411L7oT 1. 安装 numpy官方网站: ...
- 【莫烦Python】Matplotlib学习笔记(二)
[莫烦Python]Matplot学习笔记(一) [莫烦Python]Matplotlib学习笔记(二) 一.Bar柱状图/条形图 二.Contours等高线图 三.Image图像 四.3D图像 五. ...
- tkinter message_【莫烦Python】Tkinter 做简单的窗口视窗lt;学习笔记(2)gt;
接(1) 还有五个苹果:[莫烦Python]Tkinter 做简单的窗口视窗<学习笔记>zhuanlan.zhihu.com 登录窗口小例子(pickle存取) import
- 【莫烦Python】Python 基础教程——学习笔记
文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...
- 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
[莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...
- 莫烦python教程下载_Python 有哪些好的学习资料或者博客?
Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...
- tkinter笔记:scale 尺度 (莫烦python笔记)
1 主题框架 还是一样的 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geometr ...
最新文章
- Redis数据库设置密码
- 深度度量学习的这十三年,难道是错付了吗?
- 【计算理论】下推自动机 PDA 及 计算示例
- 对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了
- VUE - get 、post 请求后端接口:get 、post 写法 (Axios 中文说明文档地址)
- “自带大屏”的便利店,你见过吗?
- STM32F103mini教程学习总结与心得(四)---->看门狗
- 如何优雅的输出PHP调试信息
- 看图说话,FastJson 并没有那么流行!
- 机器学习课程笔记【十二】- 主成分分析
- Listary安装+破解
- CEIWEI CommMonitor 串口监控精灵v12.0 串口过滤;串口监控;Serial port monitor tools
- Java项目集成工作流引擎解决方案及实例展示(前后分离版)
- 3D数学 AABB(轴对齐矩形边界框)
- 呼叫中心电话系统怎么搭建?能用到哪些智能应用?
- 3dsmax-角色骨骼
- 最常用算法汇总(一)
- 关于代码审查的一些探讨和总结
- php flash 图片上传,php+jquery+ajax无刷新图片上传裁切,模拟flash头像上传实例
- Supervisor安装、配置、开启启动
热门文章
- dubbo是长连接还是短连接_从快手短视频看,内容平台如何做好产品与用户的连接及运营实操...
- Codeforces 1284E New Year and Castle Building (计算几何)
- 【做题记录】Codeforces做题记录
- problem a: 简单的整数排序_什么是基数排序?
- tftp服务器_Transfer for Mac(TFTP服务器)
- 客户端相关知识学习(一)之混合开发,为什么要在App中使用H5页面以及应用场景、注意事项...
- 实战:SQL sever如何实现同一列上下行运算?
- springboot shiro和freemarker集成之权限控制完全参考手册(跳过认证,登录由三方验证,全网首发)...
- Mysql实现企业级日志管理、备份与恢复
- datable转xml