如何在数组中找到值的负虚部然后将它们转为正数?

时间:2018-01-10 21:42:45

标签: python numpy math

我有一个函数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(),但这也没有用。

我现在没有选择。

3 个答案:

答案 0 :(得分:2)

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])

答案 1 :(得分:0)

您不能以这种方式重新定义功能。这就像说

#entrance {
    width: 8rem; //or another size
    margin auto; // to center
    border: 2px solid;
}

您可以做的是重新分配sqrt(x) = 2*sqrt(x) (不是a)的值。

imag(a)

例如,如果if imag(a) < 0 a = a - 2*imag(a)*j ,那么它会给你

a = 3 - 5j

答案 2 :(得分:0)

它似乎比减法更快。完整功能:

import numpy as np

def imag_abs(x):
    mask = x.imag < 0
    x[mask] = np.conj(x[mask])
    return x