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 个变量,而不是 xy。要从 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)