一、遇到np.bincount
在阅读《Python机器学习基础教程》这本书的时候遇到了这行代码,让我遇到了np.bincount
print("Sample counts per class:{}".format({n: v for n, v in zip(cancer.target_names, np.bincount(cancer.target))}))
- 代码解析
cancer.target
cancer.target.shape
(569,)
np.bincount(cancer.target)
array([212, 357], dtype=int64)
zip(cancer.target_names, np.bincount(cancer.target))
<zip at 0x1b7b4ead288>
list(zip(cancer.target_names, np.bincount(cancer.target)))
[(‘malignant’, 212), (‘benign’, 357)]
想了解更多关于zip函数的:python-zip()函数、lambda、map的单独与结合使用
二、详解np.bincount
- 统计作用
np.bincount是统计从0到array数组中最大数字出现的个数的函数,并同样以array数组输出显示。
- 函数使用
np.bincount(np.array([1, 1, 0, 0]))
本例中需统计的最大数字是1,因此返回从0到1统计出来每个数字出现的个数
np.bincount(np.array([3]))
本例中需统计的最大数字是3,因此返回从0到3统计出来每个数字出现的个数
np.bincount(np.array([0,0,0,0,0]))
本例中需统计的最大数字是0,因此返回从0到0统计出来每个数字出现的个数
np.bincount(np.array([1,2,3,4]))
本例中需统计的最大数字是4,因此返回从0到4统计出来每个数字出现的个数
np.bincount(np.array([False]))
系统指定False为0
np.bincount(np.array([True]))
系统指定True为1
np.bincount(np.array([True,False,False]))
总结
-
为什么《Python机器学习基础教程》中可以使用np.bincount来统计患者患良性和恶行肿瘤的人数呢?
答:由于cancer.target数组中只有0和1两个数字,最大的数字是1,因此返回的array数组肯定是从0到1每个数字出现的个数。 -
np.bincount只能计算一维的数组中数字出现的次数
-
也不能统计字符串出现的次数