向结构化numpy数组添加字段(2)

15 投票
3 回答
15972 浏览
提问于 2025-04-16 13:36

我知道这个话题已经有人问过了(最简单的方法来给结构化的numpy数组添加一个字段),可以看看这个链接:

给结构化的numpy数组添加字段

不过我对那里的回答有个疑问……

如果你使用的是numpy 1.3,还有一个函数叫做numpy.lib.recfunctions.append_fields()

我现在还是在用numpy 1.3,但它不认识这个函数,而且我在numpy的文档里也没找到任何关于它的信息。这个函数怎么了?有没有其他的函数可以实现同样的功能?

3 个回答

14

这里有一个具体的例子,教你怎么使用 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)

(在 numpy 1.6.1 中测试过)

15

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>
>>> 
3

关于recfunctions的文档,这里有一个链接:http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html

如果你看完这个还是搞不明白,那请提供一些代码示例(比如,你有没有导入numpy.lib.recfunctions?)以及错误信息或不想要的结果,这样我们才能帮你找出问题所在并解决它。

撰写回答