python,如何统计ndarray类型变量中某个值出现的次数?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文的描述对象还是基于numpy
的ndarray
类型变量,这个类型的变量类似没有表头的excel
表,而且具有非常好的柔韧性,可以利用reshape
来修改其形状。类似于nlp
的词频统计功能,本文的需求是对成员值的出现次数进行统计。
大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码所学所想。本文描述ndarray
类型的变量,如何统计成员的出现次数。测试环境:win10
,python@3.11.0
,numpy@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)
输出值为:
['博客' '大叔' '大哥' '苏南'] [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
经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。