我想按升序对名为“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
要按升序对 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)