我有一个函数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])