Как посчитать элемент, который превышает наши критерии в списке, который находится в списке, который также находится в списке (список глубиной 4 списка (?))?

Я пытаюсь подсчитать, сколько элементов превышает некоторые критерии (например: 0,7), а затем преобразовать их в проценты, элемент находится в множественном списке, который выглядит следующим образом:

[[[[0.00173012]
   [0.0009075 ]
   [0.00080378]
   ...
   [0.00069336]
   [0.00074539]
   [0.00186453]]

  [[0.00081442]
   [0.00022855]
   [0.00019197]
   ...
   [0.00018318]
   [0.00017222]
   [0.00075811]]

  [[0.00084458]
   [0.00020444]
   [0.0001783 ]
   ...
   [0.00020849]
   [0.00017066]
   [0.00070635]]

  ...

  [[0.00073932]
   [0.00022051]
   [0.00024553]
   ...
   [0.00028661]
   [0.00019603]
   [0.0007242 ]]

  [[0.00085666]
   [0.0002345 ]
   [0.00021651]
   ...
   [0.0002319 ]
   [0.00017067]
   [0.00066847]]

  [[0.00188439]
   [0.00092146]
   [0.00082662]
   ...
   [0.00077084]
   [0.00066442]
   [0.00178707]]]]

информация: есть ..., потому что это длинный список и он не может вместить весь список в выходную ячейку (изначально это изображение)

Я пробовал использовать:

len(pex > 0.7)/100
#pex is variable contain the multiple list above

но на самом деле это не работает, потому что вывод из len равен всего 1, и если я разделю его на 100, вывод будет всего 0,01

Есть ли способ легко подсчитать все элементы и элементы, которые превышают некоторые критерии, чтобы я мог преобразовать их в проценты?? ТИА

Образец pex, который вы опубликовали, не является допустимым Python, даже с учетом ....

Scott Hunter 06.05.2022 14:31

Когда я пытаюсь сравнить список с числом, я получаю сообщение об ошибке.

Scott Hunter 06.05.2022 14:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вам разрешено использовать numpy, это можно легко сделать, рассмотрите следующий пример.

import numpy as np
data = [[[1,2],[3,4]],[[5,6],[7,8]]]
arr = np.array(data) # create numpy.array
print(np.sum(arr>5)) # count elements > 5
print(arr.size) # number of all elements

выход

3
8

Объяснение: преобразуйте вложенные списки в numpy.array, используйте сравнение, чтобы получить массив одинаковой формы с Trues, где значение больше 5, и Falses в другом месте, затем используйте numpy.sum (встроенная функция нетsum), чтобы получить количество, поскольку True и False обрабатываются как 1 и 0 при выполнении арифметических операций (это также применимо вне numpy, например, sum([True,True,True]) дает 3)

Я не уверен, почему была выбрана эта структура данных, но мне кажется проще просто свести список и подсписок в один список со всеми элементами, а затем выполнить над ним операции:

def flatten(l):
    res = []
    for el in l:
        if type(el) == list:
            #If it's a list then we extract all the elements in it
            res.extend(flatten(el))
        else:
            #Only add in the result the non-list elements
            res.append(el)
    return res

dex = [[[[0.00173012],
         [0.0009075 ],
         [0.00080378],
         [0.00069336],
         ....
         [0.00074539],
         [0.00186453]]]]

flatten_dex = flatten(dex) 
#Here flatten_dex is [0.00173012, 0.0009075, 0.00080378, 0.00069336, ..., 0.00074539, 0.00186453]

Когда у вас есть этот список, очень просто подсчитать количество элементов, соответствующих условию:

nb_elements_greater_than_0_8 = len([e for e in flatten_dex if e > 0.8])
number_of_total_elements = len(flatten_dex)

Другие вопросы по теме