【问题标题】:Converting a list of numpy array to a single int numpy array将 numpy 数组列表转换为单个 int numpy 数组
【发布时间】:2018-06-20 13:41:08
【问题描述】:

我有一个 numpy 数组列表,我想将其转换为单个 int numpy 数组。
例如,如果我在维度 2 x 23 的列表中有 46 个 4 x 4 numpy 数组,我想将其转换为 2 x 23 x 4 x 4 维度的单个整数 numpy 数组。我找到了一种方法,方法是遍历每个元素并使用numpy.stack()。有没有更好的办法?

【问题讨论】:

  • 所以你有一个2x23 列表4x4 numpy 数组,并希望使它成为一个单一的 4 维 numpy 数组?

标签: python arrays numpy


【解决方案1】:

您可以像这样简单地使用np.asarray

import numpy as np

list_of_lists = [[np.random.normal(0, 1, (4, 4)) for _ in range(23)] 
                 for _ in range(2)]
a = np.asarray(list_of_lists)
a.shape

该函数将为您推断列表列表的形状并创建一个适当的数组。

【讨论】:

    【解决方案2】:

    堆栈对我有用:

    In [191]: A,B,C = np.zeros((2,2),int),np.ones((2,2),int),np.arange(4).reshape(2,
         ...: 2)
    In [192]: x = [[A,B,C],[C,B,A]]
    In [193]: 
    In [193]: x
    Out[193]: 
    [[array([[0, 0],
             [0, 0]]), array([[1, 1],
             [1, 1]]), array([[0, 1],
             [2, 3]])], [array([[0, 1],
             [2, 3]]), array([[1, 1],
             [1, 1]]), array([[0, 0],
             [0, 0]])]]
    In [194]: np.stack(x)
    Out[194]: 
    array([[[[0, 0],
             [0, 0]],
    
            [[1, 1],
             [1, 1]],
    
            [[0, 1],
             [2, 3]]],
    
    
           [[[0, 1],
             [2, 3]],
    
            [[1, 1],
             [1, 1]],
    
            [[0, 0],
             [0, 0]]]])
    In [195]: _.shape
    Out[195]: (2, 3, 2, 2)
    

    stackx 视为 2 个项目的列表,并将 np.asarray 应用于每个项目。

    In [198]: np.array(x[0]).shape
    Out[198]: (3, 2, 2)
    

    然后添加一个维度,(1,3,2,2),并在第一个轴上连接。

    在这种情况下,np.array(x) 也可以正常工作

    In [201]: np.array(x).shape
    Out[201]: (2, 3, 2, 2)
    

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2017-03-08
      • 2022-07-07
      • 2019-08-30
      • 1970-01-01
      • 2011-05-19
      • 2021-06-09
      • 2020-08-02
      • 1970-01-01
      相关资源
      最近更新 更多