2011-03-13 33 views
12

我知道已经有一个关于这个话题(将字段添加到结构化numpy的阵列干净的方法)的问题,请参见添加字段,以结构化numpy的阵列(2)

Adding a field to a structured numpy array

,但我有一个关于给定有答案的问题...

如果您使用numpy的1.3,这里还有numpy.lib.recfunctions.append_fields()

我仍然有numpy 1.3,但它不承认这个功能,我也没有在numpy的文档中找到任何有关它的信息。该功能发生了什么?有没有其他的功能可以做到这一点?

回答

2

至于为recfunctions文档,那就是:http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html

你也可能需要阅读这段对话:http://comments.gmane.org/gmane.comp.python.numeric.general/39537

如果不能读那些经过看着办吧,那么请提供一些代码示例(例如,您是否导入了numpy.lib.recfunctions?)以及错误消息或不良结果,因此我们可以确定如何解决此问题。

+1

谢谢!我认为它在numpy中是标准的,所以只是尝试键入'np.lib.recfunctions.append_fields()'(在numpy导入numpy之后关闭),但没有单独导入'numpy.lib.recfunctions'。所以这就是为什么它不知道这个功能。 但是,它仍然没有在numpy本身的文档中提及,并且这并不便于查找它。你知道它为什么不包括在内吗? – joris 2011-03-13 10:59:21

+0

没问题。很高兴你能解决问题。我不确定为什么他们没有在文档中包含这些内容(我不熟悉他们的文档策略,所以如果你真的感兴趣,或者认为它是一个文档,你可能想问一个项目开发人员bug) – 2011-03-13 11:11:50

11

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) 

好像一切工作:

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> 
>>> 
+0

确实,我没有导入...请参阅其他答案。 – joris 2011-03-13 11:07:18

+1

我也是这样。 'import numpy',然后使用'numpy.lib.recfunctions.append_fields'不起作用。你需要'导入numpy.lib.recfunctions'或类似@DTing推荐的东西。不知道为什么recfunctions不仅仅是被认为是“import numpy”的结果... – Roland 2014-01-29 19:46:20

7

这里是一个具体的例子,如何使用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) 

其中

z.dtype.names 

会给

('x', 'y') 

注意到y中也可以是“纯” ndarray没有列名:

y = np.arange(10,20) 

,或者您可以将列y重命名为别的东西(即使y具有列名称的结构化阵列):

z = append_fields(x, 'p', y) 

(在nump y 1.6.1)