jor*_*ris 14 python numpy recarray
我知道关于这个主题已经存在一个问题(将一个字段添加到结构化numpy数组中的最简洁方法),请参阅
但我对那里给出的答案有疑问......
如果您正在使用numpy 1.3,那么还有numpy.lib.recfunctions.append_fields()
我仍然有numpy 1.3,但它不识别这个功能,我也没有在numpy的文档中找到任何关于它的东西.这个功能怎么了?还有其他功能可以做同样的事情吗?
DTi*_*ing 14
http://projects.scipy.org/numpy/browser/branches/1.3.x/numpy/lib/recfunctions.py?rev=8229
你进口了吗?
from numpy.lib import recfunctions
recfunctions.append_field(*your_args)
Run Code Online (Sandbox Code Playgroud)
似乎一切正常:
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__version__
'1.3.0'
>>> from numpy.lib.recfunctions import append_fields
>>> append_fields
<function append_fields at 0x9e3e80c>
>>>
Run Code Online (Sandbox Code Playgroud)
And*_*ner 11
这是一个具体的例子如何使用append_fields(..)
(诚然,基于这里的其他答案):
import numpy as np
x = np.array(np.arange(0,10), dtype = [('x', float)])
y = np.array(np.arange(10,20), dtype = [('y', float)])
from numpy.lib.recfunctions import append_fields
z = append_fields(x, 'y', y)
Run Code Online (Sandbox Code Playgroud)
哪里
z.dtype.names
Run Code Online (Sandbox Code Playgroud)
会给
('x', 'y')
Run Code Online (Sandbox Code Playgroud)
请注意,y
在ndarray
没有列名的情况下,in也可以是"plain" :
y = np.arange(10,20)
Run Code Online (Sandbox Code Playgroud)
或者您可以将列重命名y
为其他内容(即使y是具有列名称的结构化数组):
z = append_fields(x, 'p', y)
Run Code Online (Sandbox Code Playgroud)
(在numpy 1.6.1中测试)
至于recfunctions的文档,这里是:http ://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html
如果您在阅读后无法弄清楚,请提供一些代码示例(例如,您是否导入了 numpy.lib.recfunctions?)以及错误消息或不良结果,以便我们确定如何修复它。