Elementos de compartimento por linha - Bincount 2D vetorizado para NumPy

Eu tenho uma matriz NumPy com valores inteiros. Os valores da matriz variam de 0 a max elemento na matriz (em outras palavras, todos os números de 0 a max elemento de dados apresentados nela). Preciso construir eficaz (eficaz significa solução rápida e totalmente vetorizada) para pesquisar o número de elementos em cada linha e codificá-los de acordo com os valores da matriz.

Não consegui encontrar uma pergunta semelhante, ou uma pergunta que de alguma forma ajudou a resolver isso.

Então, se eu tiver issodata na entrada:

# shape is (N0=4, m0=4) 
1   1   0   4
2   4   2   1
1   2   3   5
4   4   4   1

a saída desejada é:

# shape(N=N0, m=data.max()+1):
1   2   0   0   1   0
0   1   2   0   1   0
0   1   1   1   0   1
0   1   0   0   3   0

Eu sei como resolver isso simplesmente contando valores exclusivos em cada linha dedata iterando um por um e, em seguida, combinando resultados, levando em consideração todos os valores possíveisdata array.

Ao usar o NumPy para vetorizar isso, o principal problema é que a busca de cada número um por um é lenta e assumindo que há muitos números exclusivos apresentados, isso não pode ser uma solução eficaz. Geralmente ambosN e a contagem de números únicos é bastante grande (a propósito,N parece ser maior que a contagem de números únicos).

Alguém tem ótimas idéias?)

questionAnswers(1)

yourAnswerToTheQuestion