python – 计算数组列表的计数百分比
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 计算数组列表的计数百分比,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1912字,纯文字阅读大概需要3分钟。
内容图文
![python – 计算数组列表的计数百分比](/upload/InfoBanner/zyjiaocheng/810/6bbd4db730b34357b5c63714220084d7.jpg)
简单的问题,但我似乎无法让它工作.我想计算一个数字在数组列表中出现的百分比,并相应地输出这个百分比.
我有一个数组列表,如下所示:
import numpy as np
# Create some data
listvalues = []
arr1 = np.array([0, 0, 2])
arr2 = np.array([1, 1, 2, 2])
arr3 = np.array([0, 2, 2])
listvalues.append(arr1)
listvalues.append(arr2)
listvalues.append(arr3)
listvalues
>[array([0, 0, 2]), array([1, 1, 2, 2]), array([0, 2, 2])]
现在我使用集合来计算事件,这会返回一个集合列表.计数器:
import collections
counter = []
for i in xrange(len(listvalues)):
counter.append(collections.Counter(listvalues[i]))
counter
>[Counter({0: 2, 2: 1}), Counter({1: 2, 2: 2}), Counter({0: 1, 2: 2})]
我要找的结果是一个包含3列的数组,表示行0到2和len(listvalues)的值.每个单元格应填充数组中出现的值的百分比:
# Result
66.66 0 33.33
0 50 50
33.33 0 66.66
因此,0在阵列1中出现66.66%,在阵列2中出现0%,在阵列3中出现33.33%,依此类推.
实现这一目标的最佳方法是什么?
非常感谢!
解决方法:
这是一种方法 –
# Get lengths of each element in input list
lens = np.array([len(item) for item in listvalues])
# Form group ID array to ID elements in flattened listvalues
ID_arr = np.repeat(np.arange(len(lens)),lens)
# Extract all values & considering each row as an indexing perform counting
vals = np.concatenate(listvalues)
out_shp = [ID_arr.max()+1,vals.max()+1]
counts = np.bincount(ID_arr*out_shp[1] + vals)
# Finally get the percentages with dividing by group counts
out = 100*np.true_divide(counts.reshape(out_shp),lens[:,None])
样本在输入列表中运行另外的第四个数组 –
In [316]: listvalues
Out[316]: [array([0, 0, 2]),array([1, 1, 2, 2]),array([0, 2, 2]),array([4, 0, 1])]
In [317]: print out
[[ 66.66666667 0. 33.33333333 0. 0. ]
[ 0. 50. 50. 0. 0. ]
[ 33.33333333 0. 66.66666667 0. 0. ]
[ 33.33333333 33.33333333 0. 0. 33.33333333]]
内容总结
以上是互联网集市为您收集整理的python – 计算数组列表的计数百分比全部内容,希望文章能够帮你解决python – 计算数组列表的计数百分比所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。