首页 > 解决方案 > 比较列表整数值

问题描述

我一直在尝试将列表值与数组的列号进行比较,以便将具有相同列值的值保存在数组中。

prob_val = [[.01 .04 0.3 0.1 .5],
            [.05 .02 0.1 0.7 .1],
            [.04 .05 0.4 0.1 .6],
            [.31 .03 0.2 0.1 .5],
            [.18 .01 0.1 0.6 .1],....
            [.12 .02 0.2 0.4 .2]]

predic_val = [[0],[0],[1],[0],[1],[2],[3],.....,[1],[2]]


values = [prob_val[predic_val==i][:,i] for i in range(5)]

我的意思是对于 predic_val == 0 的所有位置将采用 prob_val 中第 0 列的值。

但是当我运行代码时,我得到了一些错误:IndexError: boolean index did not match indexed array along dimension 1; 维度为 194,但对应的布尔维度为 1

尝试使用其他代码:

test = [[0,2,3,4,5],
        [6,7,8,9,10],
        [11,12,13,14,15],
        [16,17,18,19,20],
        [21,22,23,24,25]]

pree = [[0],
        [7],
        [0],
        [0],
        [0]]

vector = []
for i in range(5):
  for l in range(len(pree)):
    if pree[l] == i:
      new = test[l][i]
      vector.append(new)
      print("l es:",l)

print("vector: ",vector)
print("pree[l]: ",pree[0])

但在这种情况下,if pree[l] == i:的行看起来不像是比较值,所以向量总是空的。

您是否有任何想法以第一种方式或第二种方式执行此操作?

标签: pythonlistcompare

解决方案


test = [[0,2,3,4,5],
        [6,7,8,9,10],
        [11,12,13,14,15],
        [16,17,18,19,20],
        [21,22,23,24,25]]

pree = [[0],
        [7],
        [0],
        [0],
        [0]]

vector = []
for i in range(5):
    for l in range(len(pree)):
        if pree[l][0] == i:    # Correction was needed here 
            new = test[l][i]
            vector.append(new)
            print("l es:", l)

print("vector: ",vector)
print("pree[l]: ",pree[0])

推荐阅读