Press "Enter" to skip to content

Python中Numpy及Matplotlib使用

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Python中Numpy及Matplotlib使用

 

1. Jupyter Notebooks

 

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

 

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

 

 

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

 

 

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

 

 

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库是一个很快的学习方法。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注