Как я могу эффективно выполнять вычисления 3D-массива?

#python #numpy #multidimensional-array

#python #numpy #многомерный массив

Вопрос:

Я буду рад вашей помощи.

У меня есть 3D-массив на python (500,200,1000), 500 строк, 200 столбцов по 1000 кадров. Какой наиболее эффективный способ вычислить для каждой координаты по всем 1000 кадрам процент инцидентов определенного значения?

например, входными данными является 3D-матрица со значением = 1. Мне нужно найти процент встречаемости значений выше 1 на пиксель в кадре по всем кадрам. На выходе получается 2d-массив, каждый элемент которого представляет процент [100 * (значения выше 1) (все значения i, j по кадрам)].

введите описание изображения здесь.

Ответ №1:

Вы можете попробовать:

 thresh = 1
(array > thresh).mean(axis=-1)
  

Работа с образцами данных:

 np.random.seed(1)
array = np.random.rand(3,4,1000)
thresh = 0.3

(array > thresh).mean(axis=-1)
  

дает вам:

 array([[0.704, 0.708, 0.681, 0.694],
       [0.702, 0.717, 0.687, 0.683],
       [0.659, 0.701, 0.727, 0.697]])
  

Комментарии:

1. Привет! спасибо за воспроизведение! уже очень полезно! Но как из этого я могу получить процент? он вычисляет среднее значение по выборкам, верно?

2. @SashaVasserfirer это процент в масштабе 0,1 . Итак, в выборке у вас есть примерно 70% значений >0.3 , что является разумным исходя из распределения выборки.

3. Хорошо, отлично!! теперь я вижу в своем коде, что это работает! но не могли бы вы объяснить этот метод на менее «питоническом» языке? Я не понимаю, как это работает 🙂