我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文的描述对象还是基于numpyndarray类型变量,这个类型的变量类似没有表头的excel表,而且具有非常好的柔韧性,可以利用reshape来修改其形状。类似于nlp的词频统计功能,本文的需求是对成员值的出现次数进行统计。

苏南大叔:python,如何统计ndarray类型变量中某个值出现的次数? - ndarray-counts
python,如何统计ndarray类型变量中某个值出现的次数?(图3-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码所学所想。本文描述ndarray类型的变量,如何统计成员的出现次数。测试环境:win10python@3.11.0numpy@1.24.2

核心方法

对于ndarray类型的数据,就可以使用numpy.unique()方法进行统计:

numpy.unique(data, return_counts=True)

numpy.unique()还有很多其它用法,暂时不在本文的讨论范围内。目前就仅使用它的return_counts参数。这个数据返回了两个值,分别是:

  • 都有哪些独一无二的值。类似:[值1,值2,值3]
  • 对应的值出现了多少次。类似:[计数1,计数2,计数3]

然而,问题就出在这两个值的出现位置并不是很直观,所以需要对上面的数据进行进行加工。

进阶版

测试代码如下:

import numpy as np
data = np.array(["苏南", "大叔", "博客", "苏南",  "大哥", "博客"])
unique, counts = np.unique(data, return_counts=True)
cnt_dict = dict(zip(unique, counts))

print(unique, counts)
print(zip(unique, counts))
print(cnt_dict)

print(cnt_dict["苏南"])
for key,value in cnt_dict.items():
    print(key,':',value)

苏南大叔:python,如何统计ndarray类型变量中某个值出现的次数? - dict统计截图
python,如何统计ndarray类型变量中某个值出现的次数?(图3-2)

输出值为:

['博客' '大叔' '大哥' '苏南'] [2 1 1 2]

<zip object at 0x000001F30C16A3C0>

{'博客': 2, '大叔': 1, '大哥': 1, '苏南': 2}

2

博客 : 2
大叔 : 1
大哥 : 1
苏南 : 2

python里面的zip函数,以前有过描述,可以理解为一个打包的行为:

dict字典类型,可以把上述数据进行再组合,形成更容易看懂的[[值1,次数1],[值2,次数2]]的字典形式。

鸢尾花

那么在标准的鸢尾花数据集中,出现了多少不同的花萼或者花瓣宽度(长度)数据呢?

import pandas as pd
import numpy as np
data = pd.read_csv("iris.csv",skiprows=1,names=["a","b","c","d","label"])
X = data.iloc[:,:-1].values
y = data.iloc[:,-1:].values

unique, counts = np.unique(X, return_counts=True)
print(dict(zip(unique, counts)))

unique, counts = np.unique(y, return_counts=True)
print(dict(zip(unique, counts)))

苏南大叔:python,如何统计ndarray类型变量中某个值出现的次数? - 鸢尾花数据统计
python,如何统计ndarray类型变量中某个值出现的次数?(图3-3)

相关文章

总结

更多苏南大叔的python经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python