python – 矩阵中每行的特定情况的计数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 矩阵中每行的特定情况的计数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1308字,纯文字阅读大概需要2分钟。
内容图文
![python – 矩阵中每行的特定情况的计数](/upload/InfoBanner/zyjiaocheng/732/6d7be26c31124501899158cd1718905e.jpg)
我对numpy和科学计算相当新,我在一个问题上挣扎了好几天,所以我决定把它发布在这里.
我正在尝试计算numpy数组中特定条件的出现.
In [233]: import numpy as np
In [234]: a= np.random.random([5,5])
In [235]: a >.7
Out[235]: array([[False, True, True, False, False],
[ True, False, False, False, True],
[ True, False, True, True, False],
[False, False, False, False, False],
[False, False, True, False, False]], dtype=bool)
我想计算每行中出现True的次数,并在此计数达到某个阈值时保留行:
例如:
results=[]
threshold = 2
for i,row in enumerate(a>.7):
if len([value for value in row if value==True]) > threshold:
results.append(i) # keep ids for each row that have more than 'threshold' times True
这是代码的非优化版本,但我很想用numpy实现同样的东西(我有一个非常大的矩阵来处理).
我一直在用np.where尝试各种各样的东西,但我只能得到扁平的结果.我需要行号
提前致谢 !
解决方法:
为了使结果可重复,使用一些种子:
>>> np.random.seed(100)
然后是一个样本矩阵
>>> a = np.random.random([5,5])
计算沿轴的出现次数和总和:
>>> (a >.7).sum(axis=1)
array([1, 0, 3, 1, 2])
您可以使用np.where获取行号:
>>> np.where((a > .7).sum(axis=1) >= 2)
(array([2, 4]),)
要过滤结果,只需使用布尔索引:
>>> a[(a > .7).sum(axis=1) >= 2]
array([[ 0.89041156, 0.98092086, 0.05994199, 0.89054594, 0.5769015 ],
[ 0.54468488, 0.76911517, 0.25069523, 0.28589569, 0.85239509]])
内容总结
以上是互联网集市为您收集整理的python – 矩阵中每行的特定情况的计数全部内容,希望文章能够帮你解决python – 矩阵中每行的特定情况的计数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。