【问题标题】:How do I add Columns to an ndarray?如何将列添加到 ndarray?
【发布时间】:2013-01-28 15:42:09
【问题描述】:

所以我有下面的代码,它读取一个文件并使用 genfromtxt 给我一个 ndarray:

arr = np.genfromtxt(filename, delimiter=',', converters={'Date': make_date},
                    names=('Date', 'Name','Age'), dtype=None)

现在,我希望在 arr 中添加另一个名为“Marks”的列。你能帮我看看我该怎么做吗?

【问题讨论】:

    标签: python matrix numpy concat


    【解决方案1】:

    np.genfromtxt 生成记录数组。列不能以通常的 numpy 方式连接到记录数组。使用numpy.lib.recfunctions.append_fields:

    import numpy as np
    from numpy.lib import recfunctions as rfn
    from StringIO import StringIO
    
    s = StringIO('2012-12-10,Peter,30\n2010-01-13,Mary,31')
    arr = np.genfromtxt(s, delimiter=',', names=('Date', 'Name','Age'), dtype=None)
    new_arr = rfn.append_fields(arr, names='Marks', data=['A','C+'], usemask=False)
    

    这会返回:

    >>> arr
    array([('2012-12-10', 'Peter', 30), ('2010-01-13', 'Mary', 31)], 
      dtype=[('Date', '|S10'), ('Name', '|S5'), ('Age', '<i8')])
    >>> new_arr
    array([('2012-12-10', 'Peter', 30, 'A'), ('2010-01-13', 'Mary', 31, 'C+')], 
      dtype=[('Date', '|S10'), ('Name', '|S5'), ('Age', '<i8'), ('Marks', '|S2')])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多