从 Python 中的 3 个 1D 数组创建 3 个 3D 数组

Create 3 3D arrays from 3 1D arrays in Python

我想找到一种在 Python 中模仿 MATLAB 的 ndarray 的方法(非常不同的 ndarry 函数!)

所以如果我有 3 个 1D 数组,比如 i = 0:10、j = 0:11、k = 0:12,我想创建 3 个 3D 数组, I、J 和 K 都是大小为 (11, 12, 13) 的 3D 数组,它们的值由下式给出:

I(x,:,:) = i(x), J(:,x,:) = j(x) 和 K(:,:,x) = k(x)

在 MATLAB 中,这很简单:

[I, J, K] = ndarray(i,j,k)

在 Python 中是否有类似的东西,没有恢复到循环 - 我似乎找不到它?

numpy.meshgrid随心所欲

import numpy as np
I,J,K = np.meshgrid(range(2), range(3), range(4))

In [17]: print(f'I={I}')                                                                                                                                                                                    
I=[[[0 0 0 0]
  [1 1 1 1]]

 [[0 0 0 0]
  [1 1 1 1]]

 [[0 0 0 0]
  [1 1 1 1]]]

In [19]: print(f'J={J}')                                                                                                                                                                                    
J=[[[0 0 0 0]
  [0 0 0 0]]

 [[1 1 1 1]
  [1 1 1 1]]

 [[2 2 2 2]
  [2 2 2 2]]]

In [20]: print(f'K={K}')                                                                                                                                                                                    
K=[[[0 1 2 3]
  [0 1 2 3]]

 [[0 1 2 3]
  [0 1 2 3]]

 [[0 1 2 3]
  [0 1 2 3]]]


或等价地,稍微更优雅的 mgrid:

I, J, K = np.mgrid[0:2,0:3,0:4]