如何访问numpy recarray的第k个字段?

3

我可以创建一个可记录数组(recarray),并通过名称访问它的成员:

import numpy as np

n = 20
x = np.recarray((n,), dtype=[('x',int),('y',float),('label',object)])
x.x[:] = range(n)
x.y[:] = np.arange(n)*0.08
x.label[:] =  ['%d bottles of beer on the wall' % i for i in range(n)]

我可以通过行索引访问数据,或者遍历行:

>>> print x[3]
(3, 0.24, '3 bottles of beer on the wall')

但是我怎么迭代记录数组中的字段或获取第k个字段呢?


嗯。我想我会从numpy.recarray转换为pandas.DataFrame - Jason S
1个回答

3

recarray具有field()方法,可用于此目的。使用您的示例...

>>> x.field(2)
... array(['0 bottles of beer on the wall', '1 bottles of beer on the wall',
       '2 bottles of beer on the wall', '3 bottles of beer on the wall',
       '4 bottles of beer on the wall', '5 bottles of beer on the wall',
       '6 bottles of beer on the wall', '7 bottles of beer on the wall',
       '8 bottles of beer on the wall', '9 bottles of beer on the wall',
       '10 bottles of beer on the wall', '11 bottles of beer on the wall',
       '12 bottles of beer on the wall', '13 bottles of beer on the wall',
       '14 bottles of beer on the wall', '15 bottles of beer on the wall',
       '16 bottles of beer on the wall', '17 bottles of beer on the wall',
       '18 bottles of beer on the wall', '19 bottles of beer on the wall'], dtype=object)

1
啊哈,谢谢!文档是空的。http://docs.scipy.org/doc/numpy/reference/generated/numpy.recarray.field.html - Jason S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接