gpt4 book ai didi

python - 使用 unravel_index 查找最大数字的索引

转载 作者:行者123 更新时间:2023-12-01 09:06:44 24 4
gpt4 key购买 nike

我正在尝试理解 numpy 函数

unravel_index

应用它来查找 n 维数组中最大数字的索引。我总是可以使用以下调用找到最大的数字:

np.where(a == a.max())[0][0]

我尝试按以下方式使用unravel_index:

a.unravel_index([a.max()],a.shape)

但这不起作用。如何使用 unravel_index 查找最大数字的索引?

最佳答案

np.unravel_index将平面索引转换为维度索引。因此,您需要将平面索引以及数组的形状传递给 np.unravel_index 。如果将多维数组转换(查看)为一维数组/向量,则平面索引是数组单元格的索引。

对于您的情况,您可能想要使用 np.argmax获取平面索引,然后使用 np.unravel_index 获取维度索引(如果需要):

a = np.random.rand(100, 100)
flat_idx = a.argmax()
dim_idx = np.unravel_index(flat_idx, a.shape)

返回最大值。值,您现在可以使用两者来索引数组a:

print(a.flat[flat_idx])
print(a[dim_idx])

使用 np.where 并使用 [0][0] 索引第一个元素将仅适用于一维数组!< br/>如果在不索引第一个元素的情况下调用它,它将返回与 np.unravel_index 非常相似的结果。但是,当 np.unravel_index 返回整数元组时,np.where 将返回整数数组元组。
这使得索引和查找索引的速度变慢! np.where(a == a.max()) 花费的时间大约是 np.unravel_index(a.argmax(), a.shape) 的4 倍 。 (针对形状为 (100,100) 和 (1000,1000) 的数组进行了测试。)

关于python - 使用 unravel_index 查找最大数字的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com