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的使用说明(二):这一章设计很多重要知识点(必看)(一)
|
1月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
45 0
|
2月前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
64 1
|
1天前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
12 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
29天前
|
机器学习/深度学习 存储 算法
NumPy 与 SciPy:Python 科学计算库的比较
【8月更文挑战第30天】
71 5
|
30天前
|
存储 缓存 C语言