所有内容均来自于:
NumPy 教程 | 菜鸟教程
Matplotlib 教程 | 菜鸟教程
numpy模块
numpy.nditer
NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。
for x in np.nditer(a, order='F'):
Fortran order,即是列序优先;for x in np.nditer(a, order='C'):
C order,即是行序优先;
修改数组中元素的值
nditer 对象有另一个可选参数 op_flags。 默认情况下,nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值的修改,必须指定 readwrite 或者 writeonly 的模式。
numpy.ndarray.flat
numpy.ndarray.flat 是一个数组元素迭代器
numpy.ndarray.flatten
numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:
ndarray.flatten(order='C')
参数说明:
- order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。
numpy.ravel
numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。
该函数接收两个参数:
numpy.ravel(a, order='C')
参数说明:
- order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。
连接数组
函数 | 描述 |
---|---|
concatenate | 连接沿现有轴的数组序列 |
stack | 沿着新的轴加入一系列数组。 |
hstack | 水平堆叠序列中的数组(列方向) |
vstack | 竖直堆叠序列中的数组(行方向) |
分割数组
函数 | 数组及操作 |
---|---|
split | 将一个数组分割为多个子数组 |
hsplit | 将一个数组水平分割为多个子数组(按列) |
vsplit | 将一个数组垂直分割为多个子数组(按行) |
数组元素的添加与删除
函数 | 元素及描述 |
---|---|
resize | 返回指定形状的新数组 |
append | 将值添加到数组末尾 |
insert | 沿指定轴将值插入到指定下标之前 |
delete | 删掉某个轴的子数组,并返回删除后的新数组 |
unique | 查找数组内的唯一元素 |
NumPy 字符串函数
以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。
这些函数在字符数组类(numpy.char)中定义。
函数 | 描述 |
---|---|
add() | 对两个数组的逐个字符串元素进行连接 |
multiply() | 返回按元素多重连接后的字符串 |
center() | 居中字符串 |
capitalize() | 将字符串第一个字母转换为大写 |
title() | 将字符串的每个单词的第一个字母转换为大写 |
lower() | 数组元素转换为小写 |
upper() | 数组元素转换为大写 |
split() | 指定分隔符对字符串进行分割,并返回数组列表 |
splitlines() | 返回元素中的行列表,以换行符分割 |
strip() | 移除元素开头或者结尾处的特定字符 |
join() | 通过指定分隔符来连接数组中的元素 |
replace() | 使用新字符串替换字符串中的所有子字符串 |
decode() | 数组元素依次调用str.decode |
encode() | 数组元素依次调用str.encode |
最值函数
numpy.amin() 和 numpy.amax():从数组中查找最小元素,最大元素
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
参数说明:
a
: 输入的数组,可以是一个NumPy数组或类似数组的对象。axis
: 可选参数,用于指定在哪个轴上计算最小值。如果不提供此参数,则返回整个数组的最小值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。out
: 可选参数,用于指定结果的存储位置。keepdims
: 可选参数,如果为True,将保持结果数组的维度数目与输入数组相同。如果为False(默认值),则会去除计算后维度为1的轴。initial
: 可选参数,用于指定一个初始值,然后在数组的元素上计算最小值。where
: 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。
numpy.argmax() 和 numpy.argmin()
numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。
条件筛选函数
numpy.where()
numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
numpy.nonzero()
numpy.nonzero() 函数返回输入数组中非零元素的索引。
NumPy 线性代数
NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:
函数 | 描述 |
---|---|
dot | 两个数组的点积,即元素对应相乘。 |
vdot | 两个向量的点积 |
inner | 两个数组的内积 |
matmul | 两个数组的矩阵积 |
determinant | 数组的行列式 |
solve | 求解线性矩阵方程 |
inv | 计算矩阵的乘法逆矩阵 |
NumPy 矩阵库(Matrix)
NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。
1.matlib.empty()
matlib.empty() 函数返回一个新的矩阵,
2.numpy.matlib.zeros()
numpy.matlib.zeros() 函数创建一个以 0 填充的矩阵。
3.numpy.matlib.ones()
numpy.matlib.ones()函数创建一个以 1 填充的矩阵。
4.numpy.matlib.eye()
numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。
5.numpy.matlib.identity()
numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。
6.numpy.matlib.rand()
numpy.matlib.rand() 函数创建一个给定大小的矩阵,数据是随机填充的。
NumPy IO
Numpy 可以读写磁盘上的文本数据或二进制数据。
NumPy 为 ndarray 对象引入了一个简单的文件格式:npy。
npy 文件用于存储重建 ndarray 所需的数据、图形、dtype 和其他信息。
常用的 IO 函数有:
- load() 和 save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy 的文件中。
- savez() 函数用于将多个数组写入文件,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npz 的文件中。
- loadtxt() 和 savetxt() 函数处理正常的文本文件(.txt 等) 【txt文件里保存的是数字才可】
例如:
Matplotlib 绘图标记
fmt 参数
fmt 参数定义了基本格式,如标记、线条样式和颜色。
fmt = '[marker][line][color]' 例如 o:r,o 表示实心圆标记,: 表示虚线,r 表示颜色为红色。
绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用 plot() 方法的 marker 参数来定义。
例如:
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])
plt.plot(ypoints, marker = '^')
plt.show()
marker 可以定义的符号如下:
标记 | 符号 | 描述 |
---|---|---|
"." | 点 | |
"," | 像素点 | |
"o" | 实心圆 | |
"v" | 下三角 | |
"^" | 上三角 | |
"<" | 左三角 | |
">" | 右三角 | |
"1" | 下三叉 | |
"2" | 上三叉 | |
"3" | 左三叉 | |
"4" | 右三叉 | |
"8" | 八角形 | |
"s" | 正方形 | |
"p" | 五边形 | |
"P" | 加号(填充) | |
"*" | 星号 | |
"h" | 六边形 1 | |
"H" | 六边形 2 | |
"+" | 加号 | |
"x" | 乘号 x | |
"X" | 乘号 x (填充) | |
"D" | 菱形 | |
"d" | 瘦菱形 | |
"|" | 竖线 | |
"_" | 横线 | |
0 (TICKLEFT) | 左横线 | |
1 (TICKRIGHT) | 右横线 | |
2 (TICKUP) | 上竖线 | |
3 (TICKDOWN) | 下竖线 | |
4 (CARETLEFT) | 左箭头 | |
5 (CARETRIGHT) | 右箭头 | |
6 (CARETUP) | 上箭头 | |
7 (CARETDOWN) | 下箭头 | |
8 (CARETLEFTBASE) | 左箭头 (中间点为基准) | |
9 (CARETRIGHTBASE) | 右箭头 (中间点为基准) | |
10 (CARETUPBASE) | 上箭头 (中间点为基准) | |
11 (CARETDOWNBASE) | 下箭头 (中间点为基准) | |
"None", " " or "" | 没有任何标记 | |
'$...$' | 渲染指定的字符。例如 "$f$" 以字母 f 为标记。 |
绘图过程如果我们自定义线的样式,包括线的类型、颜色和大小等。
线的类型
线的类型可以使用 linestyle 参数来定义,简写为 ls。
线的颜色
线的颜色可以使用 color 参数来定义,简写为 c。
线的宽度
线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:1、2.0、5.67 等。
多条线
plot() 方法中可以包含多对 x,y 值来绘制多条线。
grid() 方法
我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。