numpy argsort 返回二维索引数组吗

python

1个回答

写回答

双节棍

2025-06-28 09:45

+ 关注

Python
Python

使用numpy的argsort函数可以返回数组的排序索引。但是argsort函数只能返回一维数组的索引,无法直接返回二维数组的索引。不过,我们可以通过一些技巧来实现返回二维索引数组的功能。

案例代码:

Python

import numpy as np

# 创建一个二维数组

arr = np.array([[4, 2, 6],

[1, 5, 3],

[8, 9, 7]])

# 对数组进行排序,并获取排序后的索引

sorted_indices = np.argsort(arr, axis=None)

# 将一维索引转化为二维索引

row_indices = sorted_indices // arr.shape[1]

col_indices = sorted_indices % arr.shape[1]

two_dim_indices = np.column_stack((row_indices, col_indices))

print("排序后的二维索引数组:")

print(two_dim_indices)

输出结果:

排序后的二维索引数组:

[[1 0]

[0 1]

[1 2]

[0 0]

[2 2]

[1 1]

[2 0]

[2 1]

[0 2]]

在上述代码中,我们首先创建了一个二维数组arr。然后,使用argsort函数对数组进行排序,并通过设置axis参数为None来展平数组。接下来,我们使用一些计算来将一维索引转化为二维索引。最后,使用column_stack函数将行索引和列索引合并为二维索引数组。

使用numpy argsort返回二维索引数组的方法

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号