numpy中有一些强大的函数可以很方便的实现日常的数值处理计算。在机器学习的特征处理中,meshgrid使用的很多,我之前对于meshgrid的用法一直是有点茫然记不住,后来看到一个stackoverflow的帖子恍然大悟,所以记录分享一下,
numpy.meshgrid()
和 numpy.ravel()
是 NumPy 库中常用的函数,用于处理多维数组的操作。
numpy.meshgrid()
:
- 函数签名:
numpy.meshgrid(*xi, indexing='xy', sparse=False, copy=True)
numpy.meshgrid()
用于生成坐标矩阵或坐标网格,它接受一组一维数组作为输入,返回一个二维数组或多个二维数组,用于表示输入数组的所有可能的坐标对组合。- 参数:
- `*xi`:一组一维数组,表示坐标轴的取值范围。
- `indexing`:可选参数,确定返回的坐标矩阵的索引顺序。默认值为 `'xy'`,表示以笛卡尔坐标顺序返回。
- `sparse`:可选参数,确定返回的坐标矩阵是否为稀疏矩阵。默认值为 `False`,返回密集矩阵。
- `copy`:可选参数,确定是否复制输入数组。默认值为 `True`,表示复制输入数组。
- 返回值:
- 单个二维数组或多个二维数组,表示输入数组的所有可能的坐标对组合。
numpy.ravel()
:
- 函数签名:
numpy.ravel(a, order='C')
numpy.ravel()
用于将多维数组展平为一维数组。它接受一个多维数组作为输入,返回一个展平后的一维数组。- 参数:
- `a`:多维数组。
- `order`:可选参数,确定展平数组的顺序。默认值为 `'C'`,表示按行展平(C 风格)。
- 返回值:
- 一维数组,表示展平后的数组。
meshgrid主要是用来很方便的生成坐标对,坐标由给定的x, y两个数组来提供
将x和y分别在另一个数组的维度方向上进行扩展,然后就生成了坐标pair,返回的结果就是坐标的x集合和y集合。
代码语言:txt复制nx, ny = (3, 2)
>>> x = np.linspace(0, 1, nx) # x = array([0, 0.5, 1])
>>> y = np.linspace(0, 1, ny) # y = array([0, 1])
>>> xv, yv = np.meshgrid(x, y)
>>> xv
array([[ 0. , 0.5, 1. ],
[ 0. , 0.5, 1. ]])
>>> yv
array([[ 0., 0., 0.],
[ 1., 1., 1.]])
一个与meshgrid经常一起用的函数是reval,通常用于将meshgrid返回的的坐标集合矩阵拉伸,用于后续处理
代码语言:txt复制x = np.array([[1, 2, 3], [4, 5, 6]])
>>> print(np.ravel(x))
[1 2 3 4 5 6]
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!