我有一个函数a=x*V,其中x假定成千上万个值,因为x = arange(1,1000,0.1)V是其他常量的组合。这些使a始终复杂(具有非零的实部和虚部)。但是,由于a依赖于其他值,因此对于某些imag(a)x可以为负。

然而,对于我正在做的事情,我需要imag(a)始终为正,因此我需要采用负值并将其变为正值。

我尝试做

if imag(a)<0:
    imag(a) = -1*imag(a)


这似乎不起作用,因为它给了我错误:SyntaxError: Can't assign to function call。我以为是因为它是一个数组,所以我尝试了any()all(),但是那也不起作用。

我现在没有选择了。

最佳答案

IIUC:

In [35]: a = np.array([1+1j, 2-2j, 3+3j, 4-4j])

In [36]: a.imag *= np.where(a.imag < 0, -1, 1)

In [37]: a
Out[37]: array([ 1.+1.j,  2.+2.j,  3.+3.j,  4.+4.j])

07-26 03:16