向numpy结构化数组中添加行
有没有简单的方法可以在不创建新记录数组的情况下,往一个numpy的记录数组里添加一条记录/行?比如说,我有一个占用1Gb内存的记录数组,我希望能在不让Python临时占用2Gb内存的情况下,往里面添加一行。
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)]