首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在稀疏矩阵中查找n个最大数

在稀疏矩阵中查找n个最大数
EN

Stack Overflow用户
提问于 2010-07-07 22:37:31
回答 1查看 506关注 0票数 2

我使用稀疏矩阵作为压缩数据的手段,当然,我所做的是从大于指定阈值的所有值创建稀疏字典。我希望我的压缩数据大小是一个用户可以选择的变量。

我的问题是,我有一个稀疏矩阵,有很多接近零值的值,我必须做的是选择一个treshold,这样我的稀疏字典就有一个特定的大小(或者最终重建误差是一个特定的比率)。下面是我如何创建我的字典(取自stackoverflow,我认为是>.< ):

代码语言:javascript
复制
n = abs(smat) > treshold #smat is flattened(1D)
i = mega_range[n] #mega range is numpy.arange(smat.shape[0])
v = smat[n]
sparse_dict = dict(izip(i,v))

我如何找到treshold,使它等于我的数组的第n个最大值(smat)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-07 23:06:24

scipy.stats.scoreatpercentile(arr,per)返回给定百分位数的值:

代码语言:javascript
复制
import scipy.stats as ss
print(ss.scoreatpercentile([1, 4, 2, 3], 75))
# 3.25

如果所需的百分位数位于arr中的两点之间,则会对该值进行插值。

所以如果你设置了per=(len(smat)-n)/len(smat),那么

代码语言:javascript
复制
threshold = ss.scoreatpercentile(abs(smat), per)

应该会给出(接近)数组smat的第n个最大值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3195781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档