Numpy的21个常用知识点(3)

简介: Numpy的21个常用知识点(3)

十二、Numpy中广播的概念

广播:

简单理解为用于不同大小数组的二元通用函数(加、减、乘等)的一组规则


广播的规则:

1. 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1

2. 如果shape的维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;

3. 如果shape的维度不匹配,但是没有任何一个维度是1,则匹配失败引发错误;

1. 二维数组加一维数组

2 .两个数组均需要广播

3. 不匹配的例子

十三、Numpy求解线性方程组

对于Ax=b,已知A和b,怎么算出x?

求解:

验证:

十四、Numpy实现SVD矩阵分解

从分量还原矩阵

十五、Numpy实现多项式曲线拟合

问题定义:  

对于一堆数据点(x, y),能否只根据这些数据,找出一个函数,使得函数画出来的曲线和原始数据曲线尽量匹配?


多项式拟合问题:  

任何可微连续的函数,都可以用一个N次多项式来估计,而比N次幂更高阶的部分为无穷小可以忽略不计


3次多项式即:a$x^3$ + b$x^2$ + cx + d  

比如我们可以让sin(x) 约等于 a$x^3$ + b$x^2$ + cx + d

1. 构造原始数据

2. 使用Numpy拟合

十六、使用Matplotlib实现可视化绘图

可以直接将Numpy的数组传给Matplotlib实现可视化绘图:  

  • 曲线图
  • 饼图
  • 柱状图
  • 直方图

1. 绘制正弦曲线

2. 绘制饼图

3. 柱状图

4. 直方图

十七、Numpy实现逆矩阵求解线性方程组

对于这样的线性方程组:

  • x + y + z = 6
  • 2y + 5z = -4
  • 2x + 5y - z = 27

可以表示成矩阵的形式:

用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量


逆矩阵(inverse matrix)的定义:  

设A是数域上的一个n阶矩阵,若存在另一个n阶矩阵B,使得: AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。


使用逆矩阵求解线性方程组的方法:

两边都乘以$A^{-1}$,变成$A^{-1}$Ax=$A^{-1}$b,因为任何矩阵乘以单位矩阵都是自身,所以x=$A^{-1}$b

1. 求解逆矩阵

2. 验证矩阵和逆矩阵的乘积是单位矩阵

3. 验证线性方程组

十八、Numpy将数组写到文件

## Numpy怎样将数组读写到文件


本文档介绍的是Numpy以自己内建二进制的方式,将数组写出到文件,以及从文件加载数组;


如果是文本、表格类数据,一般使用pandas这个类库做加载和处理,不用numpy


几个方法:

1. np.load(filename):从.npy或者.npz文件中加载numpy数组  

如果文件后缀是.npy返回单个数组,如果文件后缀是.npz返回多个数组的字典

2. np.save(filename, arr):将单个numpy数组保存到.npy文件中

3. np.savez(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz未压缩的文件格式中

4. np.savez_compressed(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz压缩的文件格式中


.npy和.npz都是二进制格式文件,用纯文本编辑器打开都是乱码

1. 使用np.save和np.load保存和加载单个数组

2. 使用np.savez和np.load保存和加载多个数组

3. 使用np.savez_compressed和np.load保存和加载多个数组到压缩格式文件

1. 使用np.save和np.load保存和加载单个数组

2. 使用np.savez和np.load保存和加载多个数组

3. 使用np.savez_compressed和np.load保存和加载多个数组到压缩格式文件

十九、Numpy的结构化数组

一般情况下,Numpy中的数组都是同样的数据类型,比如int、float;  

这也是Numpy性能高效的原因,在内存中紧凑存储,读取非常快;  

但是Numpy也可以记录异构数组,比如下面的数据:

姓名 年龄 体重
小王 30 80.5
小李 28 70.3
小天 29 78.6

1. 正常的Numpy数组的dtype值只有一个类型

2. 怎样使用Numpy表达异构数据

3. 针对异构数组的查询和操作

使用列表的方式查询一行

使用字典的方式查询一列

按条件查询

对单列做逐元素计算

最后的一言:  

* 对于这种每列类型不同的“异构数据”,Pandas更擅长处理;

* 但我们还要学习一下Numpy结构化数组,不一定会使用它,但要能读懂别人的代码

二十、Numpy与Pandas数据的相互转换

Pandas是在Numpy基础上建立的非常流行的数据分析类库;  

提供了强大针对异构、表格类型数据的处理与分析能力。

本次介绍Numpy和Pandas的转换方法:  

  • Numpy数组怎样输入给Pandas的Series、DataFrame;
  • Pandas的Series、DataFrame怎样转换成Numpy的数组

将Numpy数组转换成Pandas的数据结构

将Pandas的数据结构转换成Numpy数组


* 方法1:.values()

* 方法2:.to_numpy()


用途:  

比如Scikit-Learn的模型输入需要的是Numpy的数组  

可以使用Pandas对原始数据做大量的处理后,将结果数据转换成Numpy数组作为输入

二十一、Numpy数据输入给Sklearn实现模型训练

Numpy的数组怎样与sklearn模型交互,包括训练测试集拆分、输入给模型、评估模型、模型预估对于大家自己的任务,可以提前处理成这样的Numpy格式,然后输入给sklearn模型

import numpy as np
# 使用sklearn自带的数据集,这些数据集都是Numpy的形式
# 我们自己的数据,也可以处理成这种格式,然后就可以输入给模型
from sklearn import datasets
# 用train_test_split可以拆分训练集和测试集
from sklearn.model_selection import train_test_split
# 使用LinearRegression训练线性回归模型
from sklearn.linear_model import LinearRegression

1. 加载波斯顿房价数据集

2. 拆分训练集和测试集

3. 训练线性回归模型

4. 评估模型和使用模型

相关文章
|
机器学习/深度学习 索引 Python
Numpy的21个常用知识点(2)
Numpy的21个常用知识点(2)
Numpy的21个常用知识点(2)
|
编译器 TensorFlow 算法框架/工具
Numpy的21个常用知识点(1)
Numpy的21个常用知识点(1)
Numpy的21个常用知识点(1)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(三)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(三)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(三)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(二)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(二)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(二)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(一)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(一)
numpy的使用说明(二):这一章设计很多重要知识点(必看)(一)
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
304 0
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
157 0
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
382 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
4月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
353 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
327 1