【问题标题】:Data type conversion of column in numpy record arraynumpy记录数组中列的数据类型转换
【发布时间】:2011-11-24 01:37:00
【问题描述】:

我有一个带有几个整数列和一些字符串列的 numpy recarray。字符串列中的数据由 99% 的整数组成,但 numpy 的东西它是一个字符串,因为“NA”在列中。

所以我有两个问题:

  • 如何删除 NA 并将其更改为 0?

  • 如何将字符串列转换为整数,以便拥有一个包含许多整数列的记录数组?

谢谢。

【问题讨论】:

    标签: python arrays numpy matplotlib record


    【解决方案1】:

    使用whereastype

    >>> x = np.array([123, 456, "789", "NA", "0", 0])
    >>> x 
    array(['123', '456', '789', 'NA', '0', '0'], dtype='|S8')
    >>> np.where(x != 'NA', x, 0).astype(int)
    array([123, 456, 789,   0,   0,   0])
    

    【讨论】:

    • 这在 nd 数组上效果很好,但是我如何保持我正在使用的记录数组的“rec”-ness?抱歉,我之前没有说清楚我使用的是 rec 数组
    • 您可以在rec_append_fields 的帮助下从matplotlib.mlib 向rec 数组添加新列(请参阅“记录数组辅助函数”部分)。也许添加一个包含新数据的新列并删除旧列是实现预期结果的最简单方法,如果不是唯一可能的方法。
    • 我花了很长时间的困惑才意识到 [19>、[20> 和 [21> 是您的提示符。
    • 另一种可能性是使用fromrecords 从原始数据构建一个新的recarray,对每条记录进行转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2011-05-22
    • 2015-11-25
    • 2021-11-13
    • 2019-05-05
    相关资源
    最近更新 更多