我知道关于这个主题已经有一个问题(向结构化numpy数组添加字段的最简洁方法),请参见
但是,我对那里给出的答案有一个问题...
如果您使用的是numpy 1.3,则还有numpy.lib.recfunctions.append_fields()
我仍然使用numpy 1.3,但它无法识别此函数,并且我在numpy文档中也没有找到任何关于它的内容。这个函数发生了什么?有另一个可以完成相同操作的函数吗?
我知道关于这个主题已经有一个问题(向结构化numpy数组添加字段的最简洁方法),请参见
但是,我对那里给出的答案有一个问题...
如果您使用的是numpy 1.3,则还有numpy.lib.recfunctions.append_fields()
我仍然使用numpy 1.3,但它无法识别此函数,并且我在numpy文档中也没有找到任何关于它的内容。这个函数发生了什么?有另一个可以完成相同操作的函数吗?
http://projects.scipy.org/numpy/browser/branches/1.3.x/numpy/lib/recfunctions.py?rev=8229
你导入了吗?
from numpy.lib import recfunctions
recfunctions.append_fields(*your_args) # base, names, data, ...
看起来一切都正常工作:
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>
>>>
这里是如何使用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)
wherez.dtype.names
将会给予
('x', 'y')
请注意,在这里y
也可以是没有列名的'plain'ndarray
。y = np.arange(10,20)
或者您可以将列y
重命名为其他名称(即使y是具有列名称的结构化数组):
或者您可以将y
列重命名为其他名称(即使y是带有列名称的结构化数组):
z = append_fields(x, 'p', y)
(在numpy 1.6.1中测试过)
关于recfunctions的文档,可以在这里找到:http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html
如果您阅读完仍无法理解,请提供一些代码示例(例如,您是否导入了numpy.lib.recfunctions?)以及错误消息或不良结果,以便我们确定如何修复它。
np.lib.recfunctions.append_fields()
(当然,导入了numpy作为np),但没有单独导入numpy.lib.recfunctions
,所以它不知道这个函数。但仍然,它并未在numpy文档中提到,这使得查找它并不容易。您知道为什么它没有被包括进去吗? - joris
import numpy
,然后使用numpy.lib.recfunctions.append_fields
是不起作用的。需要使用import numpy.lib.recfunctions
或者像@DTing建议的那样做一些事情。不确定为什么recfunctions不会因为import numpy
而被识别... - Roland