下面的代码由一些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