DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

Python之numpy.argpartition

2017/10/24 22:07:29
13,531 阅读
argpartitionPython

在一个python程序中看到了关于numpy.argpartition的使用,因为没有接触过,所以上网搜索相关解释,但是除了官方的简单介绍之外,没有其他技术人员或博客有相关介绍。现在通过对程序中的这个问题的摸索,现在对该函数的使用具体实例化解释如下,参照示例可以更好的明白它的具体计算。

np.argpartition:划分重组数组,返回的是重组后数据的索引数组(切记这个输出形式)。这个可以很快地找出第 k 大的数的位置,以及大于 k (排在k后面)和 小于 k (排在k前面)的数的位置。下面具体看两种类型的例子: (1)示例1:

x = np.array([3, 4, 2, 1])
x[np.argpartition(x, 0)]		>>array([1 4 2 3])
x[np.argpartition(x, 1)]		>>array([1 2 4 3])
x[np.argpartition(x, 2)]		>>array([1 2 3 4])
x[np.argpartition(x, 3)]		>>array([2 1 3 4])
x[np.argpartition(x, 4)]		>>ValueError: kth(=4) out of bounds (4)

(2)示例2:

 y = np.array([[1, 2,4,7,3,5], [3, 4,1,6,9,0]])
b0=(0)
z0 = np.argpartition(y, b0, axis=1)
=>array([[0 1 2 3 4 5]
         [5 1 2 3 4 0]])
b=(1)
z = np.argpartition(y, b, axis=1)
=>array([[0 1 2 3 4 5],
         [5 2 1 3 4 0]])
b1=(1,2)
z1 = np.argpartition(y, b1, axis=1)
=>array([[0 1 4 3 2 5]
         [5 2 0 3 4 1]])
b2=(1,2,3)
z2 = np.argpartition(y, b2, axis=1)
=>array([[0 1 4 2 3 5]
         [5 2 0 1 4 3]])
b3=(1,2,3,4)
z3 = np.argpartition(y, b3, axis=1)
=>array([[0 1 4 2 5 3]
         [5 2 0 1 3 4]])
b4=(1,2,3,4,5)
z4 = np.argpartition(y, b4, axis=1)
=>array([[0 1 4 2 5 3]
         [5 2 0 1 3 4]])
b4=(1,2,3,4,5,6)
报错:数组索引从0至5,而6越界。

在我的程序中,针对一个7494*7494的矩阵,需要确定每一行中最小的K个值,然后以7494*10的形式输出新的矩阵,由于每一行中的10个最小数值的位置都不相同,不便于在原始数据基础上直接输出,于是程序中是以索引数组的形式输出。

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • PyTorch 2.0发布——一个更快、更加Pythonic和灵活的PyTorch版本,让Tranformer运行更快!
  • 0基础安装搭建Visual Studio Code开发环境——Python开发环境
  • KerasCV——一个新的简单易用的计算机视觉(CV)算法库
  • Python for Data Analysis第三版免费在线学习网站来临!
  • Python3.11最新特性来了,多个好特性提升!
  • 为什么Python可以处理任意长度的整数运算——Python原理详解
  • Python编程环境搭建——小白起步教程!
  • Bloomberg发布的最新的memray——Python内存分析器是什么?

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署