是否有一种优雅的方法来查找复杂的二维数组中的最大值,返回实际的复数值,而不仅仅是其大小?

问题描述 投票:0回答:1

max(some2Ddata,key=np.abs)
有效,但仅适用于一维复杂数组

np.max(abs(some2Ddata))
返回最大复数值的大小,但不返回值本身

我期待着:

some2Ddata = ((1+2j, 5+1j), (4+4j, 2+3j))

complexmax(some2Data)

应该返回

4+4j
,而不是
5.657
(而且绝对不是
5+1j
)。

我很难相信这个操作没有内置标准。

python numpy complex-numbers
1个回答
2
投票

我们可以为此编写一个简单的函数。我们可以使用

np.argmax
来获取最大值的索引(这将基于
np.abs
)。因为
np.argmax
返回展平索引,所以我们使用
np.unravel_index
(根据
np.argmax
文档
示例)来获取 2D 索引。最后,我们在原始数组上使用该索引。

import numpy as np

def complex_max(a):
    raveled_index = np.argmax(np.abs(a))
    unraveled_index = np.unravel_index(raveled_index, a.shape)
    return a[unraveled_index]

some2Ddata = np.array([[1+2j, 5+1j], [4+4j, 2+3j]])
res = complex_max(some2Ddata)
print(res)  # (4+4j)
© www.soinside.com 2019 - 2024. All rights reserved.