【问题标题】:Create 3 3D arrays from 3 1D arrays in Python在 Python 中从 3 个 1D 数组创建 3 个 3D 数组
【发布时间】:2021-10-07 18:38:05
【问题描述】:

我想找到一种在 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 中是否有类似的东西,没有恢复到循环 - 我似乎找不到它?

【问题讨论】:

    标签: python arrays matlab multidimensional-array


    【解决方案1】:

    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]
    

    【讨论】:

    • 太棒了,知道一定有办法,谢谢!
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多