【发布时间】:2012-08-15 06:52:37
【问题描述】:
以下代码将数组的一部分乘以一个数字
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
问题是,将 numpy 数组的一部分乘以复数/实数而不弄乱 dtype 的最 Pythonic 方法是什么?我并不是真的想从一开始就将数组转换为复数,但程序原则上可以获得复数输入。
编辑:
我不关心复制整个数组,将其转换为复数;但我想避免检查 dtypes(即 np.float32、np.float64、np.complex、np.int 等)
【问题讨论】:
-
我想你会发现没有。
-
@IgnacioVazquez-Abrams 我对这个问题添加了一条评论,我只是想避免对可能的 dtypes 进行全面检查。例如,a + b 可以正常工作,但分配数组的一部分则不行。