6

有没有一种简单的方法可以在不创建新的记录数组的情况下将记录/行添加到 numpy 记录数组?假设我有一个需要 1Gb 内存的recarray,我希望能够在不让 python 暂时占用 2Gb 内存的情况下向它添加一行。

4

1 回答 1

10

您可以yourrecarray.resize使用具有多行的形状进行调用,然后分配给该新行。当然。如果它没有空间就地增长数组,numpy 可能仍然需要分配全新的内存,但至少你有机会!-)

由于请求了一个示例,因此来了,从规范示例列表中修改...:

>>> import numpy
>>> mydescriptor = {'names': ('gender','age','weight'), 'formats': ('S1', 'f4', 'f4')} 
>>> a = numpy.array([('M',64.0,75.0),('F',25.0,60.0)], dtype=mydescriptor)
>>> print a
[('M', 64.0, 75.0) ('F', 25.0, 60.0)]
>>> a.shape
(2,)
>>> a.resize(3)
>>> a.shape
(3,)
>>> print a
[('M', 64.0, 75.0) ('F', 25.0, 60.0) ('', 0.0, 0.0)]
>>> a[2] = ('X', 17.0, 61.5)
>>> print a
[('M', 64.0, 75.0) ('F', 25.0, 60.0) ('X', 17.0, 61.5)]
于 2009-10-21T01:32:54.743 回答