Python (Numpy) 数组排序

标签 python arrays sorting numpy

我有这个名为 v 的 dtype('float64') 数组:

array([[  9.33350000e+05,   8.75886500e+06,   3.45765000e+02],
       [  4.33350000e+05,   8.75886500e+06,   6.19200000e+00],
       [  1.33360000e+05,   8.75886500e+06,   6.76650000e+02]])

...这是我使用 np.loadtxt 命令从文件中获取的。我想在第一列的值之后对其进行排序,而不会混淆将同一行上列出的数字放在一起的结构。使用 v.sort(axis=0) 给我:

array([[  1.33360000e+05,   8.75886500e+06,   6.19200000e+00],
       [  4.33350000e+05,   8.75886500e+06,   3.45765000e+02],
       [  9.33350000e+05,   8.75886500e+06,   6.76650000e+02]])

...即将第三列的最小数字放在第一行等。我宁愿想要这样的东西...

array([[  1.33360000e+05,   8.75886500e+06,   6.76650000e+02],
       [  4.33350000e+05,   8.75886500e+06,   6.19200000e+00],
       [  9.33350000e+05,   8.75886500e+06,   3.45765000e+02]])

...每行的元素没有相对移动。

最佳答案

尝试

v[v[:,0].argsort()]

(v 是数组)。 v[:,0] 是第一列,.argsort() 返回对第一列进行排序的索引。然后使用高级索引将此排序应用于整个数组。请注意,您将获得数组的排序副本。

我知道的就地排序数组的唯一方法是使用记录数据类型:

v.dtype = [("x", float), ("y", float), ("z", float)]
v.shape = v.size
v.sort(order="x")

关于Python (Numpy) 数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047407/

相关文章:

python:在 __init__ 方法中过早调用 super().__init__ ?

c - 字符串到单个数字

c# - 在 C# 中将十进制数组转换为字节数组,反之亦然

javascript - JavaScript 是否在内部将数组转换为对象?

java - java中Akka流按id排序

arrays - 排序多维数组/slice

python - Web 应用程序的集成测试

python - 如何以漂亮的方式显示包含词典的列表?

Python:删除集合中字符串的较长子字符串

python - 字典排序和删除