在 Python 中根据特定顺序将数据排列在括号中



我有一个数组,编程后,我得到了非零数据的位置和值,看起来像(x,y,z)=(行,列,值)

[(0, 0, 1), (0, 1, 1), (1, 0, 1), (2, 3, 2), (3, 0, 3), (3, 1, 3), (3, 3, 2)]

这导致顺序为"最小行数到最高行数"。

有什么方法可以使结果按"最小列数到最高"和"最小值数到最高"进行排序?

感谢您的任何帮助!!

这是我使用的代码:

import numpy as np
groupMatrix = np.array([
[1, 1, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 2],
[3, 3, 0, 2]
])
i = np.nonzero(groupMatrix)
res = np.vstack([i, groupMatrix[i]])
print(list(zip(*res)))

你当然可以这样做,在这种情况下,
你可以按keytupleslist进行排序

,这是column
import numpy as np
groupMatrix = np.array([
[1, 1, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 2],
[3, 3, 0, 2]
])
i = np.nonzero(groupMatrix)
res = np.vstack([i, groupMatrix[i]])
arr = list(zip(*res))
col_sorted = sorted(arr, key=lambda item: item[1]) # sorted by column
val_sorted = sorted(arr, key=lambda item: item[2]) # sorted by value

希望对您有所帮助!

您可以使用内置sorted()函数中的key参数将键更改为第 i 个索引:

array = [(0, 0, 1), (0, 1, 1), (1, 0, 1), (2, 3, 2), (3, 0, 3), (3, 1, 3), (3, 3, 2)]
ascending_column_order = sorted(array, key=lambda x: x[1])

最新更新