Python 最大值所在行的索引

Python 最大值所在行的索引,python,indexing,max,Python,Indexing,Max,我有以下清单: dCF3v=[[(1.90689635276794, -44704.76171875)], [(1.90689635276794, -44705.76171875)], [(1.90689635276794, -44706.76171875)], [(1.90689635276794, -44707.76171875)] ] 我想知道最大值所在行的索引。在上面的示例中:行索引3 我已经有了查找最大值的代码: CF3a = (

我有以下清单:

dCF3v=[[(1.90689635276794, -44704.76171875)],
       [(1.90689635276794, -44705.76171875)],
       [(1.90689635276794, -44706.76171875)],
       [(1.90689635276794, -44707.76171875)]
      ]
我想知道最大值所在行的索引。在上面的示例中:行索引3

我已经有了查找最大值的代码:

CF3a = (abs(x[0][1]) for x in dCF3v)
CF3 = max(CF3a)

如果可能,我希望修改此代码,而不必执行经典的for和If循环

您可以使用
枚举
来保留
max
的索引和
参数以查找正确的值:

dCF3v=[[(1.90689635276794, -44704.76171875)],
       [(1.90689635276794, -44705.76171875)],
       [(1.90689635276794, -44706.76171875)],
       [(1.90689635276794, -44707.76171875)]
      ]

CF3a = (abs(x[0][1]) for x in dCF3v)
index, value = max(enumerate(CF3a), key=lambda (index, value): value)
print index,value

您可以使用
enumerate
保留索引,并使用
max
参数查找正确的值:

dCF3v=[[(1.90689635276794, -44704.76171875)],
       [(1.90689635276794, -44705.76171875)],
       [(1.90689635276794, -44706.76171875)],
       [(1.90689635276794, -44707.76171875)]
      ]

CF3a = (abs(x[0][1]) for x in dCF3v)
index, value = max(enumerate(CF3a), key=lambda (index, value): value)
print index,value

由于您的数据本质上是数字的,我强烈建议您使用该模块,因为它的设计部分是为了满足您的要求

您可以将数据转换为numpy数组

import numpy as np
data = np.array(dCF3v)
然后使用
np.argmax
查找最大值的索引

idx = np.argmax(data)
这将为展开的数组提供索引。如果您知道数组的形状,可以使用模运算轻松地将此平坦索引转换为行号。您可以得到这样的行数和列数

rows,cols = data.shape
然后是带模除法的行号

maxRow = idx%cols
numpy还有一个名为
unravel\u index
的函数,它为您执行模块运算

row, col = np.unravel_index(idx, data.shape)

由于您的数据本质上是数字的,我强烈建议您使用该模块,因为它的设计部分是为了满足您的要求

您可以将数据转换为numpy数组

import numpy as np
data = np.array(dCF3v)
然后使用
np.argmax
查找最大值的索引

idx = np.argmax(data)
这将为展开的数组提供索引。如果您知道数组的形状,可以使用模运算轻松地将此平坦索引转换为行号。您可以得到这样的行数和列数

rows,cols = data.shape
然后是带模除法的行号

maxRow = idx%cols
numpy还有一个名为
unravel\u index
的函数,它为您执行模块运算

row, col = np.unravel_index(idx, data.shape)

我松开了max CF3的值。value=[(1.90689635276794,-44707.76171875)],而CF3应该是44707.76171875。@jpcgandre:我为你修正了,我去掉了max CF3的值。value=[(1.90689635276794,-44707.76171875)],而CF3应该是44707.76171875。@jpcgandre:我为您解决了这个问题