Numpy list of 1D Arrays to 2D Array

Question:

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.

I currently read each column using numpy.load with a mmap. The 1D arrays are now in a list.

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?

Asked By: David Folkner

||

Answers:

You can just call np.array on the list of 1D arrays.

>>> 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]])
Answered By: senshin

The array may be recreated:

a = np.array(a.tolist())
Answered By: splendor

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.

Answered By: C. Yduqoli
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.