根据行逐步对 Numpy Python 矩阵进行排序

2024-03-15

我四处寻找并试图找到解决这个看似简单问题的方法,但一无所获。问题是根据矩阵的列逐步对矩阵进行排序。所以,如果我有一个像这样的 numpy 矩阵:

import numpy as np
X=np.matrix([[0,0,1,2],[0,0,1,1],[0,0,0,4],[0,0,0,3],[0,1,2,5]])
print(X)
[[0 0 1 2]
 [0 0 1 1]
 [0 0 0 4]
 [0 0 0 3]
 [0 1 2 5]]

我想根据第一列对其进行排序,然后是第二列、第三列等等,以获得如下结果:

Xsorted=np.matrix([[0,0,0,3],[0,0,0,4],[0,0,1,1],[0,0,1,2],[0,1,2,5]])
print(Xsorted)
[[0,0,0,3]
 [0,0,0,4]
 [0,0,1,1]
 [0,0,1,2]
 [0,1,2,5]]

虽然我认为可以通过命名列等对这样的矩阵进行排序,但我更希望有一种不太依赖于矩阵有多大的排序方法。我正在使用 Python 3.4,如果这很重要的话。

任何帮助将不胜感激!


它不会特别快,但您始终可以将行转换为元组,然后使用 Python 的排序:

np.matrix(sorted(map(tuple, X.A)))

您还可以使用np.lexsort,如建议的这个答案 https://stackoverflow.com/a/26036376/10601 to a 有点相关的问题 https://stackoverflow.com/q/2706605/10601:

X[np.lexsort(X.T[::-1])]

lexsort 方法似乎更快,但您应该使用实际数据进行测试以确保:

In [20]: X = np.matrix(np.random.randint(10, size=(100,100)))

In [21]: %timeit np.matrix(sorted(map(tuple, X.A)))
100 loops, best of 3: 2.23 ms per loop

In [22]: %timeit X[np.lexsort(X.T[::-1])]
1000 loops, best of 3: 1.22 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据行逐步对 Numpy Python 矩阵进行排序 的相关文章

随机推荐

  • Google Data API - 两条腿的身份验证令牌重用

    我正在为 Google Contact Data API 使用两条腿的 OAuth 并在每个请求上生成令牌 是否可取或者我应该存储令牌以便下次重复使用吗 另外 如何检测陈旧的令牌 我正在使用Python 和 Gdata Python 客户端
  • JDBCPreparedStatement 始终返回 1 作为自动生成的键[重复]

    这个问题在这里已经有答案了 我有这段代码试图在数据库中插入一条记录 try Connection conn getConnection String sql INSERT INTO myTable userId content timest
  • BotFramework:“状态大小超出了配置的限制。”

    我正在开发一个机器人 每当我在表单流中 PostAsync 英雄卡 50 张英雄卡 时 最后它都会给我一条错误消息 状态大小超出了配置的限制 来自 Microsoft Bot Connector DLL 尝试 setPrivateConve
  • CSS 规则“.drop.a”应用于类“drag a”

    我有以下 HTML 标记 div class drag a div div class drop a div 我还有以下 CSS 规则 该规则仅适用于我的第二个 div drop a background color red 这工作正常 除
  • 截断存储过程中的表

    当我在 Oracle shell 中运行以下命令时 它工作正常 truncate table table name 但是当我尝试将其放入存储过程时 CREATE OR REPLACE PROCEDURE test IS BEGIN trun
  • Cypress 与 NextJS SSR - 使用 Axios 拦截 RESTful API

    我正在尝试在我的 SSR next js 应用程序上使用 cypress 和固定装置编写一些测试 该应用程序使用 Axios 连接到 RESTful API 但我在拦截 RESTful API 时遇到了麻烦cy intercept 因为 c
  • JavaScript 中的文件切片会导致空 blob

    我正在实现一个基于浏览器的分块文件上传器 打开我正在使用的文件
  • Git 重置所有具有特定扩展名的文件

    我对多种类型的文件进行了更改 例如 tsx scss and scss d ts 并已提交并推送到我的分支 有什么办法可以只重置扩展名 scss d ts与主人 保留更改 tsx and scss仅重置 scss d ts与主人 Thank
  • 停止 Thrift 服务器(TSimpleServer)

    我有一个 Thrift 服务器的简单用例 TSimpleServer 其中我生成了几个线程 除了主线程之外 新生成的线程之一进入 Thrift 事件循环 即server serve 在主线程中收到信号后 我调用server stop 这导致
  • 需要将我的基于 HTML5 的 Web 应用程序转换为面向所有移动设备的移动应用程序

    是否可以将我现有的 HTML jquery js 网站转换为针对所有设备 iPhone Android 黑莓等 的移动应用程序 以下是我能想到的几点 如果我错了 请纠正我 添加 jquerymobile js 并更改 css 样式 基于访问
  • 让控制器发回不带 Content-Type 标头的响应

    我在控制器内设置了一个 Rails 3 代理方法 以使用 Nginx 的 X Accel Redirect 在允许用户的情况下从远程服务器传递特定的 URI 不幸的是 Rails 总是发送某种 Content Type 标头 该标头优先于从
  • 自动替换wpf RichTextBox中的文本

    我有一个 WPF NET 4 C RichTextBox我想用其他字符替换该文本框中的某些字符 这将发生在KeyUp event 我想要实现的目标是将首字母缩略词替换为完整单词 例如 pc 个人电脑sc 星际争霸 etc 我查看了一些类似的
  • 转义注释标签内的 html

    转义 html 没问题 它会删除 lt s and gt s etc 我遇到了一个问题 我在注释标签内输出文件名 例如 当然 如果你不逃避 事情可能会很糟糕 所以它变成了 问题是 如果文件名称中包含 则所有 html 都会被搞砸 因为不允许
  • didMove(查看: SKView) 和 didMoveToView(查看: SKView) 有什么区别?

    如标题所示 didMove to view SKView 和 didMoveToView view SKView 有什么区别 我知道 didMoveToView 是方法 并且该视图在旧 版本中属于 SKView 类型 我不明白将 查看 SK
  • iPad iPhone 规模背景图片

    只是想知道是否有其他人经历过 iPad iPhone 缩小背景图像以适应视口的情况 就我而言 我通过 JavaScript 交换背景图像 新的背景图像超宽 适合大型显示器 然而 iPad 正在缩小通过 javascript 添加到 DOM
  • 使用 CSS 剪辑/裁剪背景图像

    我有这个 HTML div lorem ipsum div 使用这个CSS graphic background image url image jpg width 200px height 100px 我应用的背景图像是 200x100
  • 有没有办法在flutter中从iOS中排除包?

    我正在使用仅适用于 Android 的 sms maintained 包 然而 该项目需要一个iOS版本 我目前正在做的是在开发iOS时删除该包 如何将包保留在 pubspec yaml 文件中 但禁止 iOS 检入该包 目标是拥有统一的代
  • PHP 中的 \x00 、 \x04 是什么意思

    我有一些代码有 x00 and x04 十六进制代码 这是什么意思 str implode x00 var message line 1 id var message x04 id line 2 将会发生什么线路 1 和线路 2我想将这些写
  • 为什么数组是协变的,而泛型是不变的?

    来自 Joshua Bloch 的 Effective Java 数组与泛型类型有两个重要的不同之处 第一个数组是协变的 泛型是不变的 协变仅仅意味着如果 X 是 Y 的子类型 那么 X 也将是 Y 的子类型 数组是协变的 因为字符串是对象
  • 根据行逐步对 Numpy Python 矩阵进行排序

    我四处寻找并试图找到解决这个看似简单问题的方法 但一无所获 问题是根据矩阵的列逐步对矩阵进行排序 所以 如果我有一个像这样的 numpy 矩阵 import numpy as np X np matrix 0 0 1 2 0 0 1 1 0