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

Python 如何在数组中找到值的负虚部,然后将它们变为正?,python,numpy,math,Python,Numpy,Math,我有一个函数a=x*V,其中x假设数千个值为x=arange(11000,0.1),V是其他常数的组合。这使得a始终是复数(具有非零实部和虚部)。但是,由于a依赖于其他值,因此对于某些x,imag(a)可能为负值 然而,对于我正在做的事情,我需要imag(a)始终为正值,所以我需要取负值并将其转换为正值 我已经试过了 if imag(a)<0: imag(a) = -1*imag(a) 如果imag(a)IIUC: [35]中的a=np.数组([1+1j,2-2j,3+3j,4-

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

然而,对于我正在做的事情,我需要
imag(a)
始终为正值,所以我需要取负值并将其转换为正值

我已经试过了

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

[35]中的
a=np.数组([1+1j,2-2j,3+3j,4-4j])
[36]中:a.imag*=np.式中(a.imag<0,-1,1)
在[37]中:a
Out[37]:数组([1.+1.j,2.+2.j,3.+3.j,4.+4.j])

不能用这种方式重新定义函数。这就像说

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


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

import numpy as np

def imag_abs(x):
    mask = x.imag < 0
    x[mask] = np.conj(x[mask])
    return x
将numpy导入为np
def imag_abs(x):
遮罩=x.imag<0
x[mask]=np.conj(x[mask])
返回x

您不能使用绝对值吗?这只会使它成为积极的,不,如果需要语句,你用什么软件包来处理复数?它不是本机Python
complex
包,因为它没有将
imag()
作为函数提供。对于LHS和RHS引用,直接使用
a.imag
。@George\E这并不能真正解决我的问题,因为真正的部分仍然需要是什么。我不单独使用它们。但我仍然需要虚部总是正的。所以我基本上需要进入q,把负的想象变成正的,然后在其他地方使用q。如果这说得通的话,我觉得这似乎是对的,有点。。。第36行中的-1和1是什么意思?@Mac,我们将复数的
图像
部分乘以
1
,如果不是负数(即保持不变),或者乘以
-1
,如果是负数negative@Mac对python不太熟悉,所以我不得不说不:(@Mac我猜如果你不把它包含在代码块中,那么copyposte会破坏python缩进。。。
if imag(a) < 0
    a = a - 2*imag(a)*j
3 - 5j - 2(-5)j = 3 + 5j
import numpy as np

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