将行添加到numpy重新排列

ast*_*rog 6 python numpy

是否有一种简单的方法可以将记录/行添加到numpy重新排列而无需创建新的重新排列?假设我有一个在内存中占用1Gb的重新排列,我希望能够在没有python暂时占用2Gb内存的情况下添加一行.

Ale*_*lli 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)]
Run Code Online (Sandbox Code Playgroud)

  • 我希望numpy的开发人员想到了一种向数据集添加行的更好方法.这是一个非常常见的操作,我不明白为什么它应该如此低效. (2认同)