numpy.minimum 对于复数

numpy.minimum for complex numbers

numpy.minimum 似乎不适用于复数:

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

我想保持最大幅度的值。 它只比较实部。元素最小比较的任何其他功能? MATLAB min 确实可以处理复数。 谢谢

您可以使用 np.where and 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])

如果你想按大小比较复数,你可以使用内置的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)

你可以做到

X = np.array([3+4j, 10+5j, 1+1j])
min_X = min(X, key=np.abs)
print(min_X)
Out: (1+1j)