numpy.minimum 对于复数
numpy.minimum for complex numbers
numpy.minimum 似乎不适用于复数:
np.minimum(5+3*1j,4+30*1j)
(4+30j)
我想保持最大幅度的值。
它只比较实部。元素最小比较的任何其他功能? MATLAB min 确实可以处理复数。
谢谢
假设你有
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)
numpy.minimum 似乎不适用于复数:
np.minimum(5+3*1j,4+30*1j)
(4+30j)
我想保持最大幅度的值。 它只比较实部。元素最小比较的任何其他功能? MATLAB min 确实可以处理复数。 谢谢
假设你有
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)