如何使用 numpy 构建排序数组? (什么是等级数组?)

2023-12-27

我希望你们所有人都度过愉快的一天。在我的 Python 课上,我们正在学习如何使用 Numpy,因此我们收到了有关该内容的作业。我的问题是:什么是排名数组以及如何使用 python 构建它?我的老师试图用这些台词解释这一点,但我实际上什么也不明白:( 这些是说明:

排名计算器(A) - 5 分

给定一个 numpy ndarray A,返回其排名数组。

Input: [[ 9 4 15 0 18]
        [16 19 8 10 1]]

Return value: [[4 2 6 0 8]
               [7 9 3 5 1]]

返回值应该是一个与原始数组 A 大小和形状相同的 ndarray。

那么,有人可以解释一下吗?不幸的是,我不太擅长 Python :(


您可以使用numpy.argsort多次处理矩阵,如建议的那样这个答案关于SO https://stackoverflow.com/questions/17814502/rank-values-in-a-2d-array.

import numpy as np

inp = np.array([[9,4,15,0,18],
                [16,19,8,10,1]])

inp.ravel().argsort().argsort().reshape(inp.shape)
array([[4, 2, 6, 0, 8],
       [7, 9, 3, 5, 1]])

什么是秩矩阵?

总之,如果我要取出矩阵中的所有整数,并将它们从小到大排序,然后为每个整数分配一个rank从 0 到 9,这将产生排名矩阵。请注意,最小的是 0,它的排名为 0,而最大的是 19,它的最后排名为 9。

双参数排序如何工作

#printing them so they align nicely
print('Array ->', end='')
for i in inp.ravel().astype('str'):
    print(i.center(4), end='')
print('\n')
print('Sort1 ->', end='')
for i in inp.ravel().argsort().astype('str'):
    print(i.center(4), end='')
print('\n')
print('Sort2 ->', end='')
for i in inp.ravel().argsort().argsort().astype('str'):
    print(i.center(4), end='')
Array -> 9   4   15  0   18  16  19  8   10  1  

Sort1 -> 3   9   1   7   0   8   2   5   4   6  

Sort2 -> 4   2   6   0   8   7   9   3   5   1  

我们先来总结一下什么argsort does. 它获取每个元素的位置,并在排序后将它们放在它们所属的位置。知道了这一点,我们就可以编写一个本质上是三角形的后向逻辑。让我们从 sort2 开始,然后是 sort1,然后是 array。

  1. 0th(在排序2中)是4th(在排序1中),4th(在排序1中)是0th(在数组中)。所以0th(在数组中)是0th(在排序2中)

  2. 9th(在排序2中)是1st(在排序1中),1st(在排序1中)是9th(在数组中)。所以,9th(在数组中)是9th(在排序2中)

  3. 6th(在排序2中)是9th(在排序1中),9th(在排序1中)是6th(在数组中)。所以,6th(在数组中)是6th(在排序2中)

理解它有点令人困惑,但是一旦您理解了 argsort() 的工作原理,就不会有问题了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 numpy 构建排序数组? (什么是等级数组?) 的相关文章

  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1

随机推荐

  • 减去 POSIXct 时如何使相同单位的时间差

    我想减去 POSIXct 我可以做到这一点 但根据第一行 我猜 差异将以秒或分钟为单位 下面您可以看到第一个差异以秒为单位 第二个差异以分钟为单位 因为我更改了第一行中的时间差 diff in seconds because 1st row
  • 在 Python 中的 SELECT 语句中传递列名

    if count 1 cursor execute SELECT FROM PacketManager WHERE filters 0 parameters 0 all rows cursor fetchall elif count 2 c
  • 理解和构建社交网络算法

    我不确定这是否是提出这个问题的正确平台 但我的问题陈述是 我有一家书店 客户数量为 x x 很大 客户可以告诉我一本书是好还是坏 不推荐 我有一个将书籍放在一起的内在逻辑 所以如果客户说一本书不好 他是在说类似的书也不好 但不要向他展示这一
  • 如何在 Intellij Idea 11 上运行 scala 代码?

    我是 intellij idea 的新手 我决定转变 因为我发现 eclipse 上的 scala 插件有烦人的 bug 但是 听说很好用的intellij idea 看起来很难用 我浏览了scala 插件页面入门 http conflue
  • Tsrange - 计算两个范围之间的差异

    我有两张桌子free time and appointment 两者都包含 tsrange 如何编写一个查询 或函数 来确定 减去 差异后的实际空闲时间appointment来自freetime INSERT INTO free time
  • Django:为 request.user 使用自定义类?

    我已经扩展了 Django 的默认用户类 如下所示 class CustomUser User friends models ManyToManyField self symmetrical False 但现在我想在任何地方使用它而不是默认
  • Symfony/PHPUnit 模拟服务

    我正在使用 PHPUnit 为 Symfony 编写功能测试 但我的模拟不起作用 我可能误解了它们的工作原理 在我的单元测试中setUp 方法我有这个代码 Create a stub stub this gt getMockBuilder
  • 如何处理“太多 HTTP 重定向”错误

    当我将网站加载到可可应用程序的 Web 视图中时 就会出现此问题 我的问题描述 错误域 NSURLErrorDomain代码 1007 HTTP重定向太多 用户信息 0x18d17d56 NSErrorFailingURLStringKey
  • FormData 构造函数丢失 Edge 中的文本区域值

    我有一个文本区域
  • ggplot 时间序列绘图:按日期分组

    我想在同一个面板图上绘制多个时间序列 而不是在单独的面板上 我从以下位置获取了 R 代码另一个 stackoverflow 帖子 https stackoverflow com questions 14136703 ggplot2 time
  • 如何以编程方式确定包含哪些待签入项目?

    我可以查询 PendingSets 和候选 PendingSets 并且似乎无法区分包含的挂起更改和排除的挂起更改 我在包含的更改中包含一个文件 可以通过 Visual Studio 团队资源管理器签入 使用 Tfs dll 查询 我得到有
  • 附件的 HTTP 响应标头内容处置

    背景 将 XML 文档写入浏览器的响应流 并使浏览器显示 另存为 对话框 Problem 考虑以下download method HttpServletResponse response getResponse BufferedWriter
  • 更改上下文节点的 XSLT 指令/函数列表?

    有谁知道更改上下文节点的 XSLT 指令 函数列表 例如 像这样的指令for each是其中之一 更改上下文的明显 XSLT 2 0 指令是for each apply templates for each group and analyz
  • 将在 JBoss 4.2 上运行良好的应用程序部署到 JBoss 5 时出错

    我尝试将应用程序 ear 文件 部署到 JBoss 5 但收到以下错误 该应用程序在 4 2 2 下部署良好 15 31 33 172 ERROR AbstractKernelController Error installing to R
  • 如何从 pandas DataFrame 输出带有合并单元格的 html 表格

    我有一个 pandas DataFrame df 作为 gt gt gt df pd DataFrame 1 2 2 2 3 1 2 3 3 3 1 3 2 3 5 7 9 9 3 2 columns list ABCDE I want t
  • 使用 R-markdown knitr hooks 自定义 HTML 报告中的表格格式

    我正在尝试建立一个knitr knit hooks 自动格式化 R markdown 块的数据帧输出kableExtra在我的 HTML 报告中 我不想重复将以下行 或任何行 添加到每个列表数据块的末尾 head iris gt kable
  • App Store 中的应用内购买被拒绝

    我的免费应用程序刚刚从应用程序商店被拒绝 我上传了 3 个应用程序 HD iPad PayedIphone 和 freeiphone 在免费版本中 我有一个完整版本的链接 显然我需要免费版本的 inAppPurchase 而不是链接到完整版
  • 未找到未捕获的模块 jqueryify

    我的情况 我正在查看 spin js 以获取我正在考虑编写的 Web 应用程序 我已阅读所有文档并浏览了所有示例 现在 我尝试在我自己的 Windows 7 笔记本电脑上运行 spin contacts 示例项目 我正在运行适用于 Wind
  • 实体框架 GroupBy 采用 mySQL 最古老的

    我有一个巨大的项目列表 需要按一个属性对它们进行分组 然后应该选择每组中最古老的 简化示例 选择每个用户中最旧的用户FirstName using ED NWEntities ctx new ED NWEntities IQueryable
  • 如何使用 numpy 构建排序数组? (什么是等级数组?)

    我希望你们所有人都度过愉快的一天 在我的 Python 课上 我们正在学习如何使用 Numpy 因此我们收到了有关该内容的作业 我的问题是 什么是排名数组以及如何使用 python 构建它 我的老师试图用这些台词解释这一点 但我实际上什么也