2011-09-24 107 views
3

我有一个numpy recarray,有几个整数列和一些字符串列。字符串列中的数据由99%的整数组成,但是它们是字符串,因为列中有“NA”。numpy记录数组中列的数据类型转换

所以我有两个问题:

  • 如何删除NA的,并更改为0?

  • 我怎样才能将字符串列转换为整数,以便我可以有一个包含许多整数列的记录数组?

谢谢。

回答

3

使用whereastype

>x = numpy.array([123, 456, "789", "NA", "0", 0]) 

>x 
array(['123', '456', '789', 'NA', '0', '0'], dtype='|S8') 

>where(x != 'NA', x, 0).astype(int) 
array([123, 456, 789, 0, 0, 0]) 
+0

这适用于第二阵列很大,但我如何保持我使用记录阵列的“REC” -ness? Sry,之前我没有说清楚我使用的是rec阵列 – Rishi

+3

您可以使用['matplotlib.mlib'](http:// matplotlib)中的'rec_append_fields'帮助您将新列添加到rec数组中。 sourceforge.net/api/mlab_api.html)(请参阅“Record array helper函数”一节)。也许用新数据添加新列并删除旧列是最简单的,如果不是实现所需结果的唯一可能方式。 – krlmlr

+0

这是有效的,但我希望有一个更简单的方法 – Rishi