Python 使用unravel_索引查找最大数的索引
我试图理解numpy函数Python 使用unravel_索引查找最大数的索引,python,numpy,Python,Numpy,我试图理解numpy函数 unravel_index 通过应用它来查找n维数组中最大数的索引。我总是可以通过以下呼叫找到最大的号码: np.where(a == a.max())[0][0] 我试图以以下方式使用解列索引: a.unravel_index([a.max()],a.shape) 但这是行不通的。如何使用展开索引查找最大数的索引?将平面索引转换为维度索引。因此,您需要将一个平面索引传递给np。如果将多维数组转换(查看)为一维数组/向量,则平面索引是数组单元格的索引 对于您的情况
unravel_index
通过应用它来查找n维数组中最大数的索引。我总是可以通过以下呼叫找到最大的号码:
np.where(a == a.max())[0][0]
我试图以以下方式使用解列索引
:
a.unravel_index([a.max()],a.shape)
但这是行不通的。如何使用展开索引
查找最大数的索引?将平面索引转换为维度索引。因此,您需要将一个平面索引传递给np。如果将多维数组转换(查看)为一维数组/向量,则平面索引是数组单元格的索引
对于您的情况,您可能希望使用获取平面索引,然后使用np.unlavel_index
获取维度索引(如果需要):
要返回最大值,现在可以使用这两种方法对数组a
进行索引:
print(a.flat[flat_idx])
print(a[dim_idx])
使用np.where
和[0][0]
索引第一个元素将仅适用于一维数组
如果在没有索引第一个元素的情况下调用它,它将返回与np.unlavel\u index
非常相同的结果。但是当np.unravel\u index
返回整数的tuple
时,np.where
将返回整数数组的tuple
。
这使得索引和查找索引的速度大大降低np.其中(a==a.max())
比np.解开索引(a.argmax(),a.shape)
花费的时间大约是的4倍。(针对形状为(100100)和(10001000)的数组进行测试)。IIUC,您需要解开索引,而不是最大值本身。因此,a.unlavel\u索引(np.where(a==a.max())[0][0],a.shape)
可能是您想要的。数组的形状是什么?您想要平面索引还是2D、3D等索引?
print(a.flat[flat_idx])
print(a[dim_idx])