开发者

Adding row to numpy recarray

开发者 https://www.devze.com 2022-12-09 04:31 出处:网络
Is there an easy way to add a record/row to a numpy recarray without creating a new recarray? Let\'s say I have a recarray that takes 1Gb开发者_C百科 in memory, I want to be able to add a row to it wi

Is there an easy way to add a record/row to a numpy recarray without creating a new recarray? Let's say I have a recarray that takes 1Gb开发者_C百科 in memory, I want to be able to add a row to it without having python take up 2Gb of memory temporarily.


You can call yourrecarray.resize with a shape which has one more row, then assign to that new row. Of course. numpy might still have to allocate completely new memory if it just doesn't have room to grow the array in-place, but at least you stand a chance!-)

Since an example was requested, here comes, modified off the canonical example list...:

>>> 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)]
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号