ND一维阵列的二维阵列

Dav*_*ner 24 python arrays numpy

我有一个包含2D numpy数组的大型列表文件numpy.save.我试图读取每个文件的第一列并创建一个新的2D数组.

我目前使用numpy.loada 读取每列mmap.1D阵列现在位于列表中.

col_list = []
for f in file_list:
    Temp = np.load(f,mmap_mode='r')
    col_list.append(Temp[:,0])
Run Code Online (Sandbox Code Playgroud)

如何将其转换为2D数组?

C. *_*oli 31

您可以使用

numpy.stack(arrays, axis=0)
Run Code Online (Sandbox Code Playgroud)

如果你有一个数组数组.如果要堆叠列而不是行,则可以指定轴.

  • 这应该是选定的答案,或者至少排名更高。常规方法(使用nd.array)不适用于ndarrays列表 (3认同)

小智 24

可以重新创建数组:

a = np.array(a.tolist())
Run Code Online (Sandbox Code Playgroud)

  • 这个答案不需要被低估,它适用于@senshin的答案不起作用的情况. (5认同)

sen*_*hin 19

您只需调用np.array一维数组列表即可.

>>> import numpy as np
>>> arrs = [np.array([1,2,3]), np.array([4,5,6]), np.array([7,8,9])]
>>> arrs
[array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9])]
>>> arr2d = np.array(arrs)
>>> arr2d.shape
(3, 3)
>>> arr2d
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

  • 这对多维数组不起作用.任何解决方案? (6认同)
  • 请注意,这不适用于 ndarray 列表。有关更清洁的解决方案,请参阅下面使用 np.stack 的答案 (2认同)