2011-03-13 29 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)