簡體   English   中英

如何在數組中找到值的負虛部,然后將其變為正?

[英]How to find negative imaginary parts of values in an array then turning them to positive?

我有一個函數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])

您不能以這種方式重新定義函數。 這就像在說

sqrt(x) = 2*sqrt(x)

你可以做的是重新分配的值a (未imag(a)

if imag(a) < 0
    a = a - 2*imag(a)*j

例如,如果a = 3 - 5j ,它將給您

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM