WedX - журнал о программировании и компьютерных науках

Как выбрать и пороговое значение x% значений из многомерного массива NumPy?

У меня есть многомерный массив NumPy формы (32, 128, 128). Для каждой записи в этом массиве (который имеет форму (128, 128)) я хотел бы проверить, превышают ли 80% значений, присутствующих в нем, пороговое значение, скажем, 0,5.

В настоящее время я делаю что-то вроде этого:

for entry in entries: # entries: (32, 128, 128)
    raveled = np.ravel(entry) # entry: (128, 128)
    total_sum = (raveled > 0.5).sum()
    proportion = total_sum/len(raveled)

    if proportion > 0.8:
        ...

Кажется, я не могу найти эффективный способ сделать это. Любая помощь будет оценена по достоинству.


  • Что такое «вход»? Что внутри или снаружи? 08.07.2021
  • Запись представляет собой массив формы (128, 128). Массив состоит из чисел с плавающей запятой, взятых из нормального распределения с нулевым средним значением и единичной дисперсией. 08.07.2021
  • arr>0.5 создает логический массив той же формы. np.sum можно использовать для подсчета количества значений «Истина/1». np.sum (и аналогичные ufunc берут кортеж axis для указания суммирования по одному или нескольким измерениям. 08.07.2021
  • Спасибо. Не могли бы вы привести минимальный пример? 08.07.2021
  • Я также добавил то, что только что попробовал. 08.07.2021

Ответы:


1
x =  np.random.rand(32, 128, 128)
#check 80%
np.sum(x > 0.5, axis = (1, 2)) > 0.8 * 128 * 128

x > 0.5 будет возвращать логическое значение True/False для всех значений (32 * 128 * 128). После этого мы суммируем по 1-й и 2-й оси (128 * 128), чтобы извлечь общее количество истинных значений, т.е. где условия выполняются для всех 32 массивов, и проверяем, превышает ли число 80%.

08.07.2021
  • Спасибо. Не могли бы вы сделать пример более полным, добавив комментарии? Может быть полезно для других читателей. 08.07.2021
  • Конечно, обновлю ответ. 08.07.2021
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]