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

1 python numpy complex-numbers

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

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

我期待着:

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

complexmax(some2Data)
Run Code Online (Sandbox Code Playgroud)

哪个应该返回4+4j,而不是5.657(绝对不是5+1j)。

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

jar*_*red 5

我们可以为此编写一个简单的函数。我们可以使用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)
Run Code Online (Sandbox Code Playgroud)