Skip to content Skip to sidebar Skip to footer

Putting Incomplete Nested Lists In A Rectangular Ndarray

In Python (also using numpy) I have a list of lists of lists, with each list being different lengths. [ [ ['header1','header2'], ['---'], [],

Solution 1:

You can create a ndarray with the desired dimensions and readily read your list. Since your list is incomplete you must catch the IndexError, which can be done in a try / exception block.

Using numpy.ndenumerate allows the solution to be easily extensible to more dimensions (adding more indexes i,j,k,l,m,n,... in the for loop below):

import numpy as np
test = [ [ ["header1","header2"],
           ["---"],
           [],
           ["item1","value1"] ],
         [ ["header1","header2","header3"],
           ["item2","value2"],
           ["item3","value3","value4","value5"] ] ]


collector = np.empty((2,4,4),dtype='|S20')

for (i,j,k), v in np.ndenumerate( collector ):
    try:
        collector[i,j,k] = test[i][j][k]
    except IndexError:
        collector[i,j,k] = ''


print collector
#array([[['header1', 'header2', '', ''],
#        ['---', '', '', ''],
#        ['', '', '', ''],
#        ['item1', 'value1', '', '']],
#       [['header1', 'header2', 'header3', ''],
#        ['item2', 'value2', '', ''],
#        ['item3', 'value3', 'value4', 'value5'],
#        ['', '', '', '']]],  dtype='|S10')

Post a Comment for "Putting Incomplete Nested Lists In A Rectangular Ndarray"