函数调用方法:
numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')
各个参数意义:
*xi
:创建的数组的对象,可以为单个值,列表,元胞等。
copy
:可选参数,值为布尔数,如果是 False
,将返回原始数组的视图以减少内存。默认值是 True
,注意,如果 sparse=False
,且copy=False
时,将大概率会返回一个不连续的数组。此外,broadcast
数组中的多个元素可能会引用单个内存位置。如果用户需要写入数组,首先应该进行 copy
操作,即维持这个参数的默认值。
由于一般的科学计算不会涉及过多的内存需求(人工智能除外),因此,本文我们不会对对这个参数进行详细地说明,一般情况下,保持这个参数为默认值即可。
index
:可选参数,默认是 index='xy'
,表示笛卡尔坐标系,用户也可以设置 index='ij'
,表示矩阵坐标系。具体的可以查看该篇------np.meshgrid函数中的indexing参数问题。
sparse
:可选参数,且值为布尔数。如果这个值是 True
,对于一个维度为i
的数组,将会被从(
N
1
,
…
N
i
,
…
N
n
N_1,\dots Ni,\dots N_n
N1,…Ni,…Nn)缩减到(
1
,
…
N
i
,
…
1
1,\dots Ni,\dots 1
1,…Ni,…1)。本文我们将会着重介绍这一参数的用法。
返回值:从坐标向量返回一个坐标矩阵。
示例1
首先我们来看一下,当我们设置 spare=False
默认值时的输出结果:
import numpy as np
x_min, x_max = 0, 2
y_min, y_max = -1, 1
sampling_points_x, sampling_points_y = 3, 3
x = np.linspace(x_min, x_max, sampling_points_x)
y = np.linspace(y_min, y_max, sampling_points_y)
xx, yy = np.meshgrid(x, y, sparse=False)
print(xx)
print(xx.shape)
print(yy)
print(yy.shape)
"""
Result:
[[0. 1. 2.]
[0. 1. 2.]
[0. 1. 2.]]
(3, 3)
[[-1. -1. -1.]
[ 0. 0. 0.]
[ 1. 1. 1.]]
(3, 3)
"""
我们再来看一下当设置 spare=True
时的输出结果:
import numpy as np
x_min, x_max = 0, 2
y_min, y_max = -1, 1
sampling_points_x, sampling_points_y = 3, 3
x = np.linspace(x_min, x_max, sampling_points_x)
y = np.linspace(y_min, y_max, sampling_points_y)
xx, yy = np.meshgrid(x, y, sparse=True)
print(xx)
print(xx.shape)
print(yy)
print(yy.shape)
"""
Result:
[[0. 1. 2.]]
(1, 3)
[[-1.]
[ 0.]
[ 1.]]
(3, 1)
"""
对比参数设置为不同值后的结果,不难看出,当设置 spare=True
我们得到的是一个稀疏矩阵,对于 xx
参数,其所有元素均为第一行的重复,因此仅保留了第一行的所有元素,而对于 yy
参数,其所有元素均为第一列元素的重复,因此仅保留第一列元素。
实际应用中,我们通常使用到的是二维的情况,也就是我们本文中给出的示例 1
中的情况,推荐将 sparse
值保留为默认值,即令 sparse=False
。
如果大家觉得有用,就请点个赞吧~