我有一個numpy的數組,我想通過一個標量乘以它乘以numpy的數組,但它不斷拋出一個錯誤:如何通過一個標
TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'int'
我的代碼是:
Flux140 = ['0.958900', 'null', '0.534400']
n = Flux140*3
我有一個numpy的數組,我想通過一個標量乘以它乘以numpy的數組,但它不斷拋出一個錯誤:如何通過一個標
TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'int'
我的代碼是:
Flux140 = ['0.958900', 'null', '0.534400']
n = Flux140*3
問題是您的數組的dtype
是一個字符串,而numpy不知道如何將字符串乘以整數。如果它是一個列表,你會重複列表三次,但一個數組會給你一個錯誤。
嘗試使用astype
方法將陣列的dtype
從字符串轉換爲浮點數。在你的情況,你必須與你的'null'
值的麻煩,所以你必須首先轉換'null'
別的東西:
Flux140[Flux140 == 'null'] = '-1'
然後你就可以float類型:
Flux140 = Flux140.astype(float)
如果你想你'null'
別的東西,你可以先改變:
Flux140[Flux140 == -1] = np.nan
現在你可以乘:
tripled = Flux140 * 3
'Flux140'看起來更像是一個字符串列表,而不是一個numpy數組。元素是字符串,對於正確的python語法,它們缺少元素之間的昏迷。 – user2304916
這絕對不是一個字符串列表。如果它是一個字符串列表,'*'會列出重複。這看起來像NumPy對象數組的打印表示。 – user2357112
你確定你正在使用一個numpy數組嗎?它看起來像你提交一個列表,而應該是一個numpy數組。你可以使用'type'參數來確定它是否真的是一個numpy數組 – LeavesBreathe