эффективный способ подсчета частоты массива 2D numpy - PullRequest
0 голосов
/ 01 мая 2020

У меня есть 2D-матрица, например:

r_nm = np.array([[1, 3 ,4, 4,4],
                 [3 ,2, 2, 1,2],
                 [4 ,2, 1 ,1,3],
                 [4, 1 ,1, 2,1],
                 [4, 2 ,3, 1,1]])

Я хочу получить частоту каждого элемента в этом 2D-массиве. np.unique и bincount не работают для 2D-массива.

Как я могу получить результат, например:

[(1,9)]   #1 appears 9 times
[(2,6)]
[(3,4)]
[(4,6)]

Или {1:9,2:6,3:4,4:6} в форме диктов?

Кстати, как насчет того, чтобы считать частоту в 3D numpy массив?

Заранее спасибо!

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете использовать scipy.stats.itemfreq

from scipy.stats import itemfreq
itemfreq(r_nm)

Screenshot of the ouput

np.unique тоже работает

import numpy as np
(unique, counts) = np.unique(r_nm, return_counts=True)
frequencies = np.asarray((unique, counts)).T

Снимок экрана вывода с np.unique

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...