numpy.minimum для комплексных чисел - PullRequest
0 голосов
/ 24 сентября 2018

numpy.minimum не работает для комплексных чисел:

np.minimum(5+3*1j,4+30*1j)
(4+30j)

Я хочу сохранить значение с максимальной величиной.Это только сравнивает реальную часть.Любая другая функция для поэлементного минимального сравнения?MATLAB min работает с комплексными числами.Спасибо

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Если вы хотите сравнить комплексные числа по величине, вы можете использовать встроенную abs, а затем сравнить результаты:

>>> np.minimum(abs(5+3*1j),abs(4+30*1j))
5.830951894845301

Чтобы получить минимальное начальное число вместо его величины, используйте argmin :

>>> nums = [5+3*1j, 4+30*1j]
...
>>> nums[np.abs(nums).argmin()]
(5+3j)
0 голосов
/ 24 сентября 2018

Вы можете сделать это

X = np.array([3+4j, 10+5j, 1+1j])
min_X = min(X, key=np.abs)
print(min_X)
Out: (1+1j)
0 голосов
/ 24 сентября 2018

Вы можете использовать np.where и np.abs

Предположим, у вас есть

vals1 = [4+30*1j, 7+3*1j, 4+30*1j]
vals2 = [5+3*1j, 6+3*1j, 5+3*1j]

затем

>>> np.where(np.abs(vals1) > np.abs(vals2), vals2, vals1)
array([5.+3.j, 6.+3.j, 5.+3.j])
...