我有三列中的数据如下,我试图识别每行(1,2,3)中最大值的位置,并忽略最大值出现多次的行。我在下面的脚本将识别每行中的最高值,但我无法解决其他两个问题。任何建议将不胜感激!
0 3 3
3 3 3
3 3 3
0 3 3
3 4 3
data = open('file.csv', 'r')
rows = []
for line in data:
row = [int(each) for each in line.split()]
rows.append(row)
data.close()
columns = zip(*rows)
for index, column in enumerate(rows):
print max(column)
答案 0 :(得分:3)
由于您的所有行都在列表中,因此您可以遍历该列表并使用一些内置函数来查找所需的信息:
gvalues = []
for row in rows:
highest = max(row)
tally = row.count(highest)
position = row.index(highest)
if tally == 1:
gvalues.append((highest, position))
else:
gvalues.append((None, None))
完成此操作后,您将获得一个列表gvalues
,其中包含每行highest value, position
的元组。对于None, None
以上的多个行,它将包含highest
。
对于您提供的示例,它将输出[(None, None), (None, None), (None, None), (None, None), (4, 1)]
答案 1 :(得分:0)
您可以使用python' s count
返回一个列表,但代码少一些。 OP只询问最高值的索引,如果唯一的话。
max_index = list()
for i in a:
if i.count(max(i))>1:
max_index.append(None)
else:
max_index.append(i.index(max(i)))
此示例返回[None, None, None, None, 1]