2013-01-02 55 views
1

我有一個numpy數組x,維度=(20,4),其中只有第一行和列是實際字符串值(字母),其餘的值是數字,其類型分配爲字符串。我想將這些數字值更改爲浮點或整數類型。在numpy數組中更改特定值的dtype?

我試過了一些步驟:

a。餘由第一行和陣列作爲單獨的變量的列的副本:

x_row = x[0] 
x_col = x[:,0] 

然後(使用numpy.delete()方法)中刪除它們從原始數組x和通過施加用於變了剩餘的值的類型循環遍歷每個值。但是,當我使用numpy.vstack()numpy.hstack()堆棧複製的行和列時,所有內容都會再次轉換爲字符串類型。所以,不知道爲什麼會發生這種情況。

b。除了我使用numpy.insert()方法來插入行和列,但是做同樣的事情 - 將所有內容都轉換回字符串類型之外,其他操作與a點相同。

那麼,有沒有辦法通過這種刪除和堆棧機制(反正無法工作),我可以更改數組的所有值(除第一行和列)到int()float()類型?

回答

4

numpy數組中的所有項都必須具有相同的dtype。這是關於numpy的一個基本事實。你可以使用一個numpy recarray,或者你可以使用dtype=object,它基本上可以讓所有值都是任何值。

我建議你看看pandas,它提供了一個表格數據結構,允許不同的列有不同的類型。聽起來你所擁有的是一張有行和列標籤的表格,這就是熊貓處理得很好。

+0

你是完全正確的朋友..沒有注意到這一點。我認爲rec數組或dtype完成我的工作(即將數組的dtype分配爲對象(dtype = object))...另外,從來沒有嘗試過熊貓數組,但是對它們進行了一些瞭解。謝謝BrenBarn。 :-) – khan