2011-09-24 105 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