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:我为您解决了这个问题