NumPyの使い方(19) 数え上げ
NumPyの数え上げ(要素のカウント)について。
0,1のみのデータから1や0の個数を数える方法
import numpy as np a1 = np.array([0, 1, 1, 0, 1, 0, 0, 0]) # 1の個数をカウントする例 print(np.count_nonzero(a1)) # 3 print(a1.sum()) # 3 print(len(np.where(a1 != 0)[0])) # 3 # 0の個数をカウントする例 print(np.count_nonzero(1 - a1)) # 5 print(len(a1) - a1.sum()) # 5
0と1を同時にカウントする例
# 例1 print(np.unique(a1, return_counts=True)) # (array([0, 1]), array([5, 3])) unique, count = np.unique(a1, return_counts=True) print(dict(zip(unique, count))) # {0: 5, 1: 3} # 例2 from collections import Counter c = Counter(a1) print(c) # Counter({0: 5, 1: 3}) # 例3 c = np.bincount(a1) print(c) # [5 3]
CounterについてはCollectionsライブラリを参照
0, 1以外のデータからのカウント
a2 = np.array([0, 1, 2, 4 , 2, 4, 4]) # np.uniqueは存在しない値をスルー u, c = np.unique(a2, return_counts=True) print(dict(zip(u, c))) # {0: 1, 1: 1, 2: 2, 4: 3} # np.bincountは存在しない値を0個とする print(np.bincount(a2)) # [1 1 2 0 3]