Python中Numpy和Matplotlib的基本使用指南


Posted in Python onNovember 02, 2021

1. Jupyter Notebooks

作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!!

你可以按[Ctrl] + [Enter]快捷键或按菜单中的运行按钮来运行单元格。

Python中Numpy和Matplotlib的基本使用指南

在function(后面按[shift] + [tab],可以获得函数或对象的帮助。

Python中Numpy和Matplotlib的基本使用指南

你还可以通过执行function?获得帮助。

Python中Numpy和Matplotlib的基本使用指南

2. NumPy 数组

操作numpy数组是 Python 机器学习(或者,实际上是任何类型的科学计算)的重要部分。 在这里我主要快速介绍一下重要基本的功能。

 

import numpy as np

# 设置随机种子来获得可重复性
rnd = np.random.RandomState(seed=520)

# 生成随机数组
# Array: shape(3, 5); 
#        value: [0, 1]
X = rnd.uniform(low=0.0, high=1.0, size=(3, 5)) 

print(X)

(请注意,NumPy 数组也是从 0 开始的索引)

# 元素访问

# 获取单个元素
# (这里是第一行第一列的元素)
print(X[0, 0])

# 获取一行
# (这里是第二行)
print(X[1])

# 获取一列
# (这里是第二列)
print(X[:, 1])

# 数组转置
print(X.T)
# 创建均匀间隔的数字的行向量。
y = np.linspace(0, 12, 5) # 从0开始,到12结束,数量为5
print(y)

# 将行向量转换为列向量
print(y[:, np.newaxis])


# 获得形状或改变数组形状

# 生成随机数组
rnd = np.random.RandomState(seed=520)
X = rnd.uniform(low=0.0, high=1.0, size=(3, 5))

# X的大小(3,5) 
print(X.shape)

# 将 X 大小变为 (5,3)
X_reshaped = X.reshape(5, 3)
print(X_reshaped)

# 使用整数数组的索引(花式索引)
indices = np.array([3, 1, 0])
print(indices)
# 取X的第4,2,1列作为新数组
X[:, indices]

3. SciPy 稀疏数组

虽然我们平时不会大量使用它们,但稀疏矩阵在某些情况下非常好用。 在一些机器学习任务中,尤其是与文本分析相关的任务,数据可能大多为零。 存储所有这些零是非常低效的,并且以仅包含“非零”值的方式表示可以更有效。 我们可以创建和操作稀疏矩阵,如下所示:

# 创建一个包含大量零的随机数组
rnd = np.random.RandomState(seed=123)

X = rnd.uniform(low=0.0, high=1.0, size=(10, 5))
print(X)

# 将大多数元素设置为零
X[X < 0.7] = 0
print(X)

from scipy import sparse
# 将 X 转换为 CSR(压缩稀疏行)矩阵
X_csr = sparse.csr_matrix(X)
print(X_csr)

# 将稀疏矩阵转换为密集数组
print(X_csr.toarray())

(你可能偶然发现了一种将稀疏表示转换为密集表示的替代方法:numpy.todensetoarray返回一个 NumPy 数组,而todense返回一个 NumPy 矩阵。在本教程中,我们将使用 NumPy 数组,而不是矩阵;scikit-learn 不支持后者。)

CSR 表示对于计算非常有效,但它不适合添加元素。 为此,LIL(List-In-List)表示更好:

# 创建一个空的 LIL 矩阵并添加一些项目
X_lil = sparse.lil_matrix((5, 5))

for i, j in np.random.randint(0, 5, (15, 2)):
    X_lil[i, j] = i + j

print(X_lil)
print(type(X_lil))

X_dense = X_lil.toarray()
print(X_dense)
print(type(X_dense))

通常,一旦创建了 LIL 矩阵,将其转换为 CSR 格式很有用(许多 scikit-learn 算法需要 CSR 或 CSC 格式)

X_csr = X_lil.tocsr()
print(X_csr)
print(type(X_csr))

可用于各种问题的可用稀疏格式包括:

  • CSR(压缩稀疏行)
  • CSC(压缩稀疏列)
  • BSR(块稀疏行)
  • COO(坐标)
  • DIA(对角线)
  • DOK(键的字典)
  • LIL(列表中的列表)

scipy.sparse子模块还有很多稀疏矩阵的函数,包括线性代数,稀疏求解器,图算法等等。

4. Matplotlib

机器学习的另一个重要部分是数据可视化。 Python 中最常用的工具是matplotlib。 这是一个非常灵活的包,我们将在这里介绍一些基础知识。

由于使用的是 Jupyter,所以使用 IPython 方便的内置“魔术函数”,即“matoplotlib内联”模式,它将直接在笔记本内部绘制图形。

%matplotlib inline

import matplotlib.pyplot as plt

# 绘制直线
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x));

# 散点图
x = np.random.normal(size=500)
y = np.random.normal(size=500)
plt.scatter(x, y);

# 使用 imshow 展示绘图
# - note that origin is at the top-left by default!

x = np.linspace(1, 12, 100)
y = x[:, np.newaxis]

im = y * np.sin(x) * np.cos(y)
print(im.shape)

plt.imshow(im);

# 轮廓图
# - 请注意,此处的原点默认位于左下角!
plt.contour(im);

# 3D 绘图
from mpl_toolkits.mplot3d import Axes3D
ax = plt.axes(projection='3d')
xgrid, ygrid = np.meshgrid(x, y.ravel())
ax.plot_surface(xgrid, ygrid, im, cmap=plt.cm.viridis, cstride=2, rstride=2, linewidth=0);

有许多可用的绘图类型。 查看matplotlib库是一个很快的学习方法。

总结

到此这篇关于Python中Numpy和Matplotlib基本使用的文章就介绍到这了,更多相关Python Numpy和Matplotlib使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
浅析Python中的多进程与多线程的使用
Apr 07 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python基于time模块表示时间常用方法
Jun 18 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 #Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 #Python
Python 正则模块详情
Nov 02 #Python
Python 数据可视化之Bokeh详解
Nov 02 #Python
Python 数据可视化之Matplotlib详解
分位数回归模型quantile regeression应用详解及示例教程
Python常遇到的错误和异常
Nov 02 #Python
You might like
php一个找二层目录的小东东
2012/08/02 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python如何实现远程方法调用
2020/08/07 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
在线课程:Skillshare
2019/04/02 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
女大学生个人求职信
2013/12/09 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
网络优化专员求职信
2014/05/04 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书