如何对 X 数组进行排序并将更改应用于 Y 数组

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

我想按升序对名为“deg”的 X 数组的每一行进行排序,其中每个数据都链接到“Ir”数组上的 Y 值。 X 和 Y 具有相同的尺寸(11 x 10)

当X矩阵排序时,我需要Y矩阵按照与X相同的顺序排列(因此Y不是按升序排序)。

问题的简化视图:

deg 2x2 矩阵: [[5。 3.] [6. 2.]]

Ir 2x2 矩阵: [[10。 20.] [30. 40.]]

我希望他们成为:

排序度: [[3. 5.] [2. 6.]]

链接排序 Ir: [[20。 10.] [40. 30.]]

这是我的数据:

Ech1 度 90 82 49 13 76 90 109 131.5 110 117

Ech1红外 0.848484848484849 0.0272727272727273 0.00484848484848485 0 0.00666666666666667 0.848484848484849 0.8181818181818 18 0.0118181818181818 0.384848484848485 0.0757575757575758

为了理解, all_deg 是一个列表的列表,如 {'Ech1': ['90', '82', '49', '13', '76', '90', '109', '131.5', ' 110', '117'], 'Ech2': ['90', '73', '5 等

以下是“deg”和“Ir”矩阵的创建方式(相同的过程):

numeric_part = 1 # It's important to start at 1 to have 'Ech 1' in the first iteration
matrix_size = len(all_deg) # ALL DEG IS A LIST OF LIST containing all degree data
deg = np.zeros((matrix_size, matrix_size-1), dtype=object)

for i in all_deg:
    selected_list_key = f'Ech{numeric_part}' # Define which sample's list we want in the all-list
    selected_list = all_deg[selected_list_key] # Retrieve the specific list from the all-list

    float_sl = [float(ele) for ele in selected_list] # Convert the data into float

    deg[numeric_part - 1, :] = float_sl  # Enter the sorted list into the X-th row of the matrix

    numeric_part += 1
python arrays numpy sorting
1个回答
0
投票

要按升序对 deg 数组进行排序,同时保持 Ir 数组中的相应行完整,您可以使用 NumPy 来实现。具体方法如下:

import numpy as np

# Your data
deg = np.array([[5., 3.], [6., 2.]])
Ir = np.array([[10., 20.], [30., 40.]])

# Sort deg in increasing order while keeping the corresponding rows in Ir intact
sorted_indices = np.argsort(deg, axis=1)
sorted_deg = np.take_along_axis(deg, sorted_indices, axis=1)
sorted_Ir = np.take_along_axis(Ir, sorted_indices, axis=1)

print("Sorted deg:")
print(sorted_deg)
print("Linked sorted Ir:")
print(sorted_Ir)
© www.soinside.com 2019 - 2024. All rights reserved.