Если столбцы имеют одинаковый тип, вы можете использовать numpy.lib.stride_tricks.as_strided
, чтобы сделать массив, который вы читаете из файла формы (L, N-1), похожим на форму (L, N).Например,
In [5]: a = numpy.arange(12).reshape(4,3)
In [6]: a
Out[6]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
In [7]: a.strides
Out[7]: (24, 8)
In [8]: b = numpy.lib.stride_tricks.as_strided(a, shape=(4, 4), strides=(24, 8))
In [9]: b
Out[9]:
array([[ 0, 1, 2, 3],
[ 3, 4, 5, 6],
[ 6, 7, 8, 9],
[ 9, 10, 11, 112]])
Теперь вы можете использовать этот массив b
для заполнения таблицы.Последний столбец каждой строки будет таким же, как первый столбец следующей строки, но вы перезапишете их, когда сможете вычислить значения.
Это не будет работать, если a
- массив записей(т.е. имеет сложный тип d).Для этого вы можете попробовать numpy.lib.recfunctions.append_fields
.Поскольку он скопирует данные в новый массив, он не сэкономит вам значительный объем памяти, но позволит вам выполнять всю запись одновременно.