2013-07-18 96 views
3

我有一個numpy的數組,我想通過一個標量乘以它乘以numpy的數組,但它不斷拋出一個錯誤:如何通過一個標

TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'int' 

我的代碼是:

Flux140 = ['0.958900', 'null', '0.534400'] 
n = Flux140*3 
+0

'Flux140'看起來更像是一個字符串列表,而不是一個numpy數組。元素是字符串,對於正確的python語法,它們缺少元素之間的昏迷。 – user2304916

+2

這絕對不是一個字符串列表。如果它是一個字符串列表,'*'會列出重複。這看起來像NumPy對象數組的打印表示。 – user2357112

+0

你確定你正在使用一個numpy數組嗎?它看起來像你提交一個列表,而應該是一個numpy數組。你可以使用'type'參數來確定它是否真的是一個numpy數組 – LeavesBreathe

回答

1

這是一串字符串。你想要一個數字數組。在製作陣列之前用float解析輸入。 (關於這些'null'的操作取決於您的應用程序。)

+0

我在這裏試過: – user2596490

8

問題是您的數組的dtype是一個字符串,而numpy不知道如何將字符串乘以整數。如果它是一個列表,你會重複列表三次,但一個數組會給你一個錯誤。

嘗試使用astype方法將陣列的dtype從字符串轉換爲浮點數。在你的情況,你必須與你的'null'值的麻煩,所以你必須首先轉換'null'別的東西:

Flux140[Flux140 == 'null'] = '-1' 

然後你就可以float類型:

Flux140 = Flux140.astype(float) 

如果你想你'null'別的東西,你可以先改變:

Flux140[Flux140 == -1] = np.nan 

現在你可以乘:

tripled = Flux140 * 3