2016-08-10 9 views
0

は、私は私が欲しいものnumpyのnumpyのすべての要素の数を取得する方法は?

array([1,1,2,3,4,5,5,5,6,7,7,7,7]) 

の配列があるとし、各要素のカウント与えるために2つの配列を取得することです:私は、ループのためにどんなことなくこれを行うことができますどのように

array([1,2,3,4,5,6,7]) 
array([1,1,1,1,3,1,4]) 

を?

+1

をリストの内包は、forループとしてカウントしますか? – Julien

+0

私はnumpy関数を使いたいと思います。 – maple

+1

あなたの例では、入力に2 '1があるので、2番目の配列は2で始まります。つまり、私はあなたの質問を誤解しない限りです。 –

答えて

6
In [1043]: np.unique(np.array([1,1,2,3,4,5,5,5,6,7,7,7,7]),return_counts=True) 
Out[1043]: (array([1, 2, 3, 4, 5, 6, 7]), array([2, 1, 1, 1, 3, 1, 4])) 
0

あなたはnp.bincount使用することができます。

>>> import numpy as np 
>>> a = np.array([1,1,2,3,4,5,5,5,6,7,7,7,7]) 
>>> b = np.bincount(a) 
>>> b[np.unique(a)] 
array([2, 1, 1, 1, 3, 1, 4]) 

をそして他の配列を取得する:

>>> np.unique(a) 
array([1, 2, 3, 4, 5, 6, 7]) 
+0

ありがとうございます、しかし、それは大量のメモリが必要です。 – maple

+0

@ mapleただし、 'np.unique'よりも計算が速いです(' timeit'を使って確認できます) – 3kt

関連する問題