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 相关文章推荐
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
python中nan与inf转为特定数字方法示例
May 11 Python
分享一个简单的python读写文件脚本
Nov 25 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
使用python绘制温度变化雷达图
Oct 18 Python
python__name__原理及用法详解
Nov 02 Python
python 求定积分和不定积分示例
Nov 20 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
python 爬虫请求模块requests详解
Dec 04 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP实现货币换算的方法
2014/11/29 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python3排序的实例方法
2020/10/20 Python
优秀中专生推荐信
2013/11/17 职场文书
金属材料工程个人求职的自我评价
2013/12/04 职场文书
最新党员思想汇报
2014/01/01 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL