1.np.sum(a,axis=None,dtype=None)

发现对于布尔运算的结果,np.sum()只是返回其中True的个数。如:

>>> np.sum(np.array([True,False,True,False,False,True]))3

用在统计样本中各类元素个数中:

from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
data = x[0]  # 数据集中第一个属性
features = set(data)  # data中各不同的特征
tmp = [data == feature for feature in features]  # 返回的tmp是含35个元素的表,每个表中元素是150个元素的矩阵,矩阵中元素是布尔运算判别结果,True or False
>>>[np.sum(x) for x in tmp]
[2, 7, 9, 10, 6, 9, 4, 6, 3, 5, 7, 1, 1, 1, 3, 6, 4, 2, 5, 7, 6, 6, 1, 1, 1, 1, 8, 1, 4, 8, 4, 3, 1, 3, 4]

同样如同np.argsort(),或者np.argmax(a,axis=None).返回最大值的索引。

2.set(iterable)

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

显然可以用来提取出所以类别

3.np.bincount(x,weights=None,minlength=0)

x 可以是列表,数组,weights是每个元素的权重,写成列表形式,如果weights不是None,则返回结果为权重的叠加和,其中每个元素是对应元素的权重的和。元素个数和x的元素个数是相同的,minlength是指定结果的长度,如果minlength被指定,那么输出数组中bin的数量至少为它指定的数(如果必要的话,bin的数量会更大,这取决于x)。

>>> np.bincount([2,3,3,4],weights=None,minlength=0)array([0, 0, 1, 2, 1], dtype=int64)
>>> np.bincount(np.array([2,3,3,4]),weights=[0.5,0.4,-0.2,0.6],minlength=0)array([0. , 0. , 0.5, 0.2, 0.6])
>>> np.bincount([0.2,0.3,0.3,0.4],weights=None,minlength=0)array([4], dtype=int64)

注意到没法处理浮点数,因为他会把浮点数变成整数。

3.collcetions.Counter()

Counter()函数可以统计一维数组中不同元素及其出现次数。返回结果为一个字典,字典keys是元素的类别,values是类别对应出现次数。可以通过Counter(x).values(),和Counter(x).keys()来访问各类别出现次数,和类别。当然是列表形式。只能以for循环访问具体元素。

>>> d=np.random.randint(1,5,size=7)
>>> d
array([2, 4, 3, 4, 2, 2, 2])
>>> Counter(d)
Counter({2: 4, 4: 2, 3: 1})
>>> Counter(d).values()
dict_values([4, 2, 1])
>>> Counter(d).keys()
dict_keys([2, 4, 3])
>>> for i in Counter(d).keys():print(i)2
4
3

Counter统计对象可以是字符串,也可以是浮点数:

>>> a=np.array(['是','否','是','是','否','非',])
>>> from collections import Counter
>>> Counter(a)
Counter({'是': 3, '否': 2, '非': 1})
>>> Counter(np.array([0.1,0.3,0.5,0.8]))
Counter({0.1: 1, 0.3: 1, 0.5: 1, 0.8: 1})

这是他的优点,但是没法对每个元素加权,这也是没办法的。这时就需要bincount函数

counter由于返回的是字典,因此没法索引。如果一定要索引,就需要将字典类型转换。如list(counter(a)).这样就可以索引其中元素了.一般索引keys()或values()。

4.np.bincount(x, weights=None, minlength)

点击打开链接np.bincount详解

补充几点:

0.bincount对自然数统计,不管是否出现,如果对象中只有1,3,那么输出会补上0,2,虽然他们的出现次数都为0.

0.1. 输出的数组实际是对应元素的权重和,如果weights=None,则权重默认为1,否则就按加法计算。

1.bincount只能统计数字出现次数,不能统计字符串出现次数,如:

>>> a=np.array(['是','否','是','是','否','非',])
>>> np.bincount(a)
Traceback (most recent call last):File "<pyshell#44>", line 1, in <module>np.bincount(a)
TypeError: Cannot cast array data from dtype('<U1') to dtype('int64') according to the rule 'safe'
>>> a=np.array(['a','c','d'])
>>> np.bincount(a)
Traceback (most recent call last):File "<pyshell#46>", line 1, in <module>np.bincount(a)
TypeError: Cannot cast array data from dtype('<U1') to dtype('int64') according to the rule 'safe'

2.数字必须是整数,不能是浮点数,如:

>>> np.bincount(np.array([0.1,0.3,0.5,0.8,2]))
Traceback (most recent call last):File "<pyshell#35>", line 1, in <module>np.bincount(np.array([0.1,0.3,0.5,0.8,2]))
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
>>> 

3.必须是自然数,不能是负数。例如:

>>> b=[-1,-2,1,1,2,3,6]
>>> b=np.array([b])
>>> np.bincount(b)
Traceback (most recent call last):File "<pyshell#32>", line 1, in <module>np.bincount(b)
ValueError: object too deep for desired array

4.bincount统计对象可以是列表,元组,但是也不许有字符串,或者负数,浮点数

5.enumerate(iterable)

enumerate()是内置函数,返回对应索引及其值,也是没法直接访问其中元素。

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

>>> d
array([2, 3, 4, 2, 3, 2])
>>> index_lst=[]  # 存放索引
>>> ele_lst=[]  # 存放元素
>>> from collections import Counter
>>> features=Counter(d).keys() # 找features也可用set(d)获取,都一样需要转变成list才能索引
>>> features
dict_keys([2, 3, 4])
>>> features=list(feautres)  # 如果不把feature变成列表格式就没法索引里面的元素
>>> for index,ele in enumerate(d):if ele == features[0]:ele_lst.append(ele)index_lst.append(index)
>>> index_lst
[0, 3, 5]
>>> ele_lst
[2, 2, 2]

6.filter(function,iterable)

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

7.用判别语句实现分类统计

最简单的例子:

>>> d=[2,3,4,2,3,2]  # 定义一个列表
>>> d == 2  # 这里只能这这个判句
False
>>> d=np.array(d)  # 如果变成矩阵,就可以对所有元素进行判断了
>>> d == 2
array([ True, False, False,  True, False,  True])
>>> features=set(d)
>>> features
{2, 3, 4}

最好用矩阵判断。列表默认对整个表判断

>>> e=[d == feature for feature in features]
>>> e
[array([ True, False, False,  True, False,  True]), array([False,  True, False, False,  True, False]), array([False, False,  True, False, False, False])]

每个特征都对所有的元素遍历判别过了,返回结果是每个特征对应的判别结果,可以用来寻找每个特征对于的样本和输出。

如:

第一个特征也就是2对应的样本:

>>> d[e[0]]
array([2, 2, 2])

python中统计特征相关推荐

  1. 用 XGBoost 在 Python 中进行特征重要性分析和特征选择

    使用诸如梯度增强之类的决策树方法的集成的好处是,它们可以从训练有素的预测模型中自动提供特征重要性的估计. 在本文中,您将发现如何使用Python中的XGBoost库来估计特征对于预测性建模问题的重要性 ...

  2. 使用XGBoost在Python中进行特征重要性分析和特征选择

    [翻译自 : Feature Importance and Feature Selection With XGBoost in Python] [说明:Jason Brownlee PhD大神的文章个 ...

  3. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...

  4. python中统计时间的函数

    学习目标: 在python中,datetime是时间模块,在这个模块下还包含着一个datetime的类,通过以下代码可以调用这个类,统计程序运行的时间,得到时间差. from datetime imp ...

  5. python中统计相同字符的个数

    描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写,字符串长度小于500. 输入描述: 第一行输入一个由字母和数字以及空格组成的 ...

  6. python中统计计数的几种方法

    以下实例展示了 count() 方法的使用方法: T = (123, 'Google', 'Runoob', 'Taobao', 123);print ("123 元素个数 : " ...

  7. python中统计计数的几种方法和Counter的介绍

    1使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b', ...

  8. python中统计单词出现的次数_python统计文章中单词出现次数实例

    python统计单词出现次数 做单词词频统计,用字典无疑是最合适的数据类型,单词作为字典的key, 单词出现的次数作为字典的 value,很方便地就记录好了每个单词的频率,字典很像我们的电话本,每个名 ...

  9. 图像特征算法(三)——ORB算法简述及Python中ORB特征匹配实践

    计算机视觉专栏传送 上一篇:图像特征算法(二)--SURF算法简述及Python标记SURF特征检测实践 下一篇:持续创作中- 目录 计算机视觉专栏传送 一.ORB算法 1.算法简介 2.FAST寻找 ...

最新文章

  1. UC伯克利教授Stuart Russell人工智能基础概念与34个误区
  2. android 图片加载过多崩溃
  3. 实战Solaris 10
  4. HTTP 头部解释,HTTP 头部详细分析,最全HTTP头部信息
  5. Mr.J--JS事件监听(捕获冒泡)
  6. building tool
  7. JS_console对象中的一些常用方法
  8. 检查python模块_Python输入模块–有效使用类型检查器
  9. Hive 窗口函数lead、lag
  10. Linux:configure: error: OpenSSL libcrypto not found
  11. visual studio 2010和注册码
  12. NDK not configured
  13. 计算机打字盲打方法,练习键盘打字方法 盲打的指法练习
  14. 利用微信搜索抓取公众号文章
  15. 【NPDP产品经理】发散思维让你的思维视野更广阔
  16. 从卡牌类游戏初探游戏服务器
  17. python #hsv空间中Hue色度/色调在色相环上的角#冷暖色调 在色相环上的范围
  18. 搞定检索式对话系统的候选response检索--使用pysolr调用Solr
  19. About kettle carte
  20. Intellij搭建spark开发环境

热门文章

  1. 【李宏毅2020 ML/DL】P20-21 Recurrent Neural Network | “Deep and structure is future.“
  2. 重力感应游戏可行性办法研究_完结
  3. mysql 存储过程 光标_mysql存储过程 光标
  4. SystemVerilog中package(包)的基本使用
  5. php 脚本调试,PHP 调试脚本
  6. DOM 精通了?请问 Node 和 Element 有何区别?
  7. android SQLite常用数据类型
  8. C++ BigEndian::FromLocal(uint_16)
  9. linux监控进程资源,linux系统资源监控命令
  10. 12平键标准尺寸规格表_郑州花纹板加工规格尺寸表