【问题标题】:Adding a field to a structured numpy array (2)向结构化 numpy 数组添加字段 (2)
【发布时间】:2011-03-13 10:16:52
【问题描述】:

我知道已经有关于这个主题的问题(将字段添加到结构化 numpy 数组的最简洁方法),请参阅

Adding a field to a structured numpy array

但我对那里给出的答案有疑问......

如果你使用的是 numpy 1.3,还有 numpy.lib.recfunctions.append_fields()

我还有 numpy 1.3,但是它不能识别这个函数,而且我在 numpy 的文档中也没有找到任何关于它的信息。函数发生了什么?有没有其他功能可以做到这一点?

【问题讨论】:

    标签: python numpy recarray


    【解决方案1】:

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

    【讨论】:

    • 确实,我没有导入...查看其他答案。
    • 我也打了这个。 import numpy 然后使用 numpy.lib.recfunctions.append_fields 不起作用。需要import numpy.lib.recfunctions 或类似@DTing 推荐的东西。不知道为什么 recfunctions 不只是因为import numpy 的结果而被识别...
    【解决方案2】:

    这是一个如何使用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 in 也可以是“普通”ndarray,不带列名:

    y = np.arange(10,20)
    

    或者您可以将列 y 重命名为其他名称(即使 y 是具有列名的结构化数组):

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

    (在 numpy 1.6.1 中测试)

    【讨论】:

      【解决方案3】:

      关于recfunctions的文档,这里是:http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html

      如果您看完后无法弄清楚,请提供一些代码示例(例如,您是否导入了 numpy.lib.recfunctions?)以及错误消息或不期望的结果,以便我们确定如何修复它。

      【讨论】:

      • 谢谢!我认为它在 numpy 中是标准的,所以只是尝试输入 np.lib.recfunctions.append_fields()(在将 numpy 导入为 np 之后),但没有单独导入 numpy.lib.recfunctions。所以这就是它不知道这个功能的原因。但是,在 numpy 本身的文档中并没有提到它,这并没有使它更容易找到它。你知道为什么不包括它吗?
      • 没问题。很高兴你解决了。我不确定他们为什么没有将其包含在文档中(尽管我不熟悉他们的文档政策,所以如果您真的感兴趣,或者认为这是一个文档,您可能想询问其中一位项目开发人员错误)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多