Python:将二维数组扩展为多个一维数组
Python: Expand 2D array to multiple 1D arrays
考虑以下来自 np.meshgrid docs 的示例:
nx, ny = (3, 2)
x = np.linspace(0, 1, nx)
y = np.linspace(0, 1, ny)
xv, yv = np.meshgrid(x, y)
在我的应用程序中,我有 25 个变量,而不是 x
和 y
。要从 25 个变量中创建一个网格,一种方法是:
v1 = np.linspace(0, 1, 10)
v2 = np.linspace(0, 1, 10)
...
v25 = np.linspace(0, 1, 10)
z_grid = np.meshgrid(v1, v2, ..., v25)
但是,代码看起来会很难看,而且不是模块化的w.r.t。变量的数量(因为每个变量都是硬编码的)。因此,我对以下内容感兴趣:
n_variables = 25
z = np.array([np.linspace(0, 1, 10)] * n_variables)
z_grid = np.dstack(np.meshgrid(z))
不过,我猜 meshgrid(z)
不是正确的调用,我应该将 z
扩展为 n_variables
数组。关于如何将二维数组扩展为多个一维数组有什么想法吗?
应该这样做。
n_variables = 25
z = np.array([np.linspace(0, 1, 10)] * n_variables)
z_grid = np.dstack(np.meshgrid(*z))
列表前的 * 运算符,解包列表元素。考虑以下:
v1 = [1,2,3]
v2 = [4,5,6]
list_of_v = [v1,v2]
some_fucntion(v1,v2) == some_function(*list_ov_v)
考虑以下来自 np.meshgrid docs 的示例:
nx, ny = (3, 2)
x = np.linspace(0, 1, nx)
y = np.linspace(0, 1, ny)
xv, yv = np.meshgrid(x, y)
在我的应用程序中,我有 25 个变量,而不是 x
和 y
。要从 25 个变量中创建一个网格,一种方法是:
v1 = np.linspace(0, 1, 10)
v2 = np.linspace(0, 1, 10)
...
v25 = np.linspace(0, 1, 10)
z_grid = np.meshgrid(v1, v2, ..., v25)
但是,代码看起来会很难看,而且不是模块化的w.r.t。变量的数量(因为每个变量都是硬编码的)。因此,我对以下内容感兴趣:
n_variables = 25
z = np.array([np.linspace(0, 1, 10)] * n_variables)
z_grid = np.dstack(np.meshgrid(z))
不过,我猜 meshgrid(z)
不是正确的调用,我应该将 z
扩展为 n_variables
数组。关于如何将二维数组扩展为多个一维数组有什么想法吗?
应该这样做。
n_variables = 25
z = np.array([np.linspace(0, 1, 10)] * n_variables)
z_grid = np.dstack(np.meshgrid(*z))
列表前的 * 运算符,解包列表元素。考虑以下:
v1 = [1,2,3]
v2 = [4,5,6]
list_of_v = [v1,v2]
some_fucntion(v1,v2) == some_function(*list_ov_v)