【发布时间】:2011-11-24 01:37:00
【问题描述】:
我有一个带有几个整数列和一些字符串列的 numpy recarray。字符串列中的数据由 99% 的整数组成,但 numpy 的东西它是一个字符串,因为“NA”在列中。
所以我有两个问题:
如何删除 NA 并将其更改为 0?
如何将字符串列转换为整数,以便拥有一个包含许多整数列的记录数组?
谢谢。
【问题讨论】:
标签: python arrays numpy matplotlib record
我有一个带有几个整数列和一些字符串列的 numpy recarray。字符串列中的数据由 99% 的整数组成,但 numpy 的东西它是一个字符串,因为“NA”在列中。
所以我有两个问题:
如何删除 NA 并将其更改为 0?
如何将字符串列转换为整数,以便拥有一个包含许多整数列的记录数组?
谢谢。
【问题讨论】:
标签: python arrays numpy matplotlib record
使用where 和astype:
>>> 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])
【讨论】:
rec_append_fields 的帮助下从matplotlib.mlib 向rec 数组添加新列(请参阅“记录数组辅助函数”部分)。也许添加一个包含新数据的新列并删除旧列是实现预期结果的最简单方法,如果不是唯一可能的方法。
fromrecords 从原始数据构建一个新的recarray,对每条记录进行转换。