使用匹配数字的预定义顺序重新排列数组

问题描述 投票:0回答:1

我有两个二维数组

array1 = np.array(
        [[1, 2],
         [2, 1],
         [3, 3]])

array2 = np.array(
        [[2, 3],
         [3, 2],
         [1, 1]])

我想以某种方式对 array2 进行排序,以便 array1 第二列中的值和顺序与 array2 第一列匹配

所需的输出将是一个如下所示的 numpy 数组

sorted_array2 =
    [[2, 3]
     [1, 1]
     [3, 2]]

然后组合两个数组以获得最终的数组,如下所示

[[1, 2, 3],
 [2, 1, 1],
 [3, 3, 2]]

感谢您的宝贵时间。

python arrays sorting
1个回答
0
投票

您可以通过首先根据 array2 第一列中的值对 array2 进行排序,并使用 array1 第二列中的相应值作为排序键来实现此目的。然后,您可以沿第二个轴连接 array1 和排序后的 array2 以获得所需的最终数组。

# Sort array2 based on the values in its first column using the second column of array1 as the sorting key
sorted_indices = np.argsort(array2[:, 0])
sorted_array2 = array2[sorted_indices]

# Combine array1 and sorted_array2
final_array = np.concatenate((array1, sorted_array2), axis=1)
© www.soinside.com 2019 - 2024. All rights reserved.