有没有一种简单的方法可以向numpy recarray中添加记录/行而不创建新的recarray?假设我有一个recarray,它在内存中占用1Gb,我想能够添加一行到它里面,而不必让Python暂时占用2Gb的内存。
您可以使用具有一个更多行的形状调用 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)]