下面的代碼由一些numpy的陣列,花式索引,複數
def mul_by_num(a,b):
a[0:2] *= b
import numpy as np
a = np.ones(5,dtype=np.float64)
mul_by_num(a,1.0)
mul_by_num(a,1j) #Generates a warning (and casts to float!)
第二呼叫生成一個警告
-c:2: ComplexWarning: Casting complex values to real discards the imaginary part
問題是乘以陣列的一部分,什麼是大多數pythonic的方式乘numpy數組的部分複數/實數而不與dtypes混淆?我真的不想從一開始就將數組轉換爲複數,但程序原則上可以獲得複雜的輸入。
編輯:
我不在乎複製全陣列,它鑄造複雜;但我想避免檢查dtypes(即,np.float32,np.float64,np.complex,np.int等)
我想你會發現沒有一個。 – 2012-08-15 06:54:01
@ IgnacioVazquez-Abrams我對這個問題添加了一個評論,我只是想避免對可能的dtypes進行全面檢查。例如,a + b工作得很好,但是分配數組的一部分卻沒有。 – 2012-08-15 06:59:27