I have a large list files that contain 2D numpy arrays pickled through numpy.save
. I am trying to read the first column of each file and create a new 2D array.
我有一个大的列表文件,其中包含通过numpy.save pickled的2D numpy数组。我试图读取每个文件的第一列并创建一个新的2D数组。
I currently read each column using numpy.load
with a mmap
. The 1D arrays are now in a list.
我目前使用带有mmap的numpy.load读取每一列。 1D阵列现在位于列表中。
col_list = []
for f in file_list:
Temp = np.load(f,mmap_mode='r')
col_list.append(Temp[:,0])
How can I convert this into a 2D array?
如何将其转换为2D数组?
3 个解决方案
#1
13
You can just call np.array
on the list of 1D arrays.
您只需在1D数组列表中调用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]])
#2
12
The array may be recreated:
可以重新创建数组:
a = np.array(a.tolist())
#3
2
You can use
您可以使用
numpy.stack(arrays, axis=0)
if you have an array of arrays. You can specify the axis in case you want to stack columns and not rows.
如果你有一个数组数组。如果要堆叠列而不是行,可以指定轴。
#1
13
You can just call np.array
on the list of 1D arrays.
您只需在1D数组列表中调用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]])
#2
12
The array may be recreated:
可以重新创建数组:
a = np.array(a.tolist())
#3
2
You can use
您可以使用
numpy.stack(arrays, axis=0)
if you have an array of arrays. You can specify the axis in case you want to stack columns and not rows.
如果你有一个数组数组。如果要堆叠列而不是行,可以指定轴。