真值返回指数

2024-03-28 12:08:53 发布

您现在位置:Python中文网/ 问答频道 /正文

对于下面编写的代码,我想打印samples_avg中的值索引,对于samples_avg中的每个列表,这些值在maxlist中返回true。所以名单上

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]

我希望返回值像

filtered = [[], [0], [1, 2]]

因为在第一个列表中没有条件为真的索引,所以在第二个列表的索引0处为真,在samples_avg内的最后一个列表的索引1和2处为真

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
    filtered = []
    maxval = [max(x) for x in zip(*samples_avg)]
    maxlist = ([r >= (m/5) for row in samples_avg for r, m in zip(row, maxval)])

    results =[[] for i in samples_avg]
    for i in results:
        filtered.append([x for x, y in zip(samples_avg[i], maxlist) if y == True])
        print (np.where((filtered) is True))

当前返回三个空数组。如何修复此问题,使数组包含索引?任何建议都将不胜感激!你知道吗


Tags: 代码intrue列表for数组zipresults
1条回答
网友
1楼 · 发布于 2024-03-28 12:08:53

只是稍微修改了一下列表理解,使用enumerate获取实际索引,并在if子句中使用条件true,而不是map值。你知道吗

试试这个:

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
    maxval = [max(x) for x in zip(*samples_avg)]
    return [[i for i,(r, m) in enumerate(zip(row, maxval)) if r >= (m/5)] for row in samples_avg]

print(check(samples_avg))

输出:

[[], [0], [1, 2]]

相关问题 更多 >