NumPy记录数组中的列的数据类型转换

4
我有一个包含多个整数列和一些字符串列的numpy recarray。字符串列中的数据99%由整数组成,但是因为“NA”在该列中,numpy认为它是字符串。

所以我有两个问题:

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

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

谢谢。

1个回答

3
使用 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”特性?抱歉,我之前没有清楚地说明我正在使用rec数组。 - Rishi
3
你可以通过使用matplotlib.mlib中的rec_append_fields函数(参见“记录数组辅助函数”一节)向记录数组添加新列。也许添加一个新的包含新数据的列并删除旧列是实现期望结果最简单也可能是唯一的方法。 - krlmlr
1
我花了很长时间感到困惑,才意识到 [19>、[20> 和 [21> 是你的提示符。 - rhombidodecahedron
另一种可能性是使用fromrecords从原始记录构建一个新的recarray,对每个记录进行转换。 - Matthew Strawbridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接