【问题标题】:How to convert 3D array to a list of 2D arrays in python?如何将 3D 数组转换为 python 中的 2D 数组列表?
【发布时间】:2021-06-04 07:34:45
【问题描述】:

我想将 3D 数组(例如大小 = 3x3x4)转换为 3 个 (3x4) 数组的列表。 else 块中的 3D 数组 Aif 块中的类型不同。

我尝试了 tolist() 函数,但它将 3D 数组转换为列表列表,这是不需要的。

X = np.random.randn(3, 3, 3)
for R in range(1,10):
    N = len(X.shape) 
    B = ()
    C = []

    for i in range(N):
        B += svd(X[i])
        C.append(B[3*i])
        
    C = np.array(C)
    if R <= np.shape(C)[2]:
        A = C[:,:,:R]
    else:
        A = np.concatenate((C[:,:,:np.shape(C)[2]],np.zeros((3,3,1))),axis=2)

理想情况下,A = [np.random.randn(In, R) for In in X.shape]。 但我正在修改这一步,将 X 的左奇异向量分配给 A

【问题讨论】:

  • 这听起来像是 XY 问题。 list 可以为您做哪些 numpy 不能做的事情?

标签: python list multidimensional-array svd


【解决方案1】:

numpy 数组是可迭代的,您可以轻松地将其转换为列表:

lst = list(A)

演示:

>>> arr = np.arange(8).reshape(2,2,2)
>>> arr
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])
>>> list(arr)
[array([[0, 1],
       [2, 3]]), array([[4, 5],
       [6, 7]])]

【讨论】:

    【解决方案2】:

    要将 3D 数组转换为 2D 数组列表,只需使用 list

    X = np.random.randn(3, 3, 3)
    list(X)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2011-05-19
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多