我有一个2x3x4 Numpy数组,看起来像这样:
[[[1 3 2 4]
[0 1 0 1]
[0 1 2 3]]
[[1 4 2 3]
[1 0 1 1]
[0 1 2 3]]]
如何通过每个2D矩阵中的第一行对此进行排序,即实现输出:
[[[1 2 3 4]
[0 0 1 1]
[0 2 1 3]]
[[1 2 3 4]
[1 1 1 0]
[0 2 3 1]]]
请注意,每个2D矩阵中的第2行和第3行也会随着第一行移动索引.
我有一个2x3x4 Numpy数组,看起来像这样:
[[[1 3 2 4]
[0 1 0 1]
[0 1 2 3]]
[[1 4 2 3]
[1 0 1 1]
[0 1 2 3]]]
如何通过每个2D矩阵中的第一行对此进行排序,即实现输出:
[[[1 2 3 4]
[0 0 1 1]
[0 2 1 3]]
[[1 2 3 4]
[1 1 1 0]
[0 2 3 1]]]
请注意,每个2D矩阵中的第2行和第3行也会随着第一行移动索引.
也许你可以用list comprehension:
import numpy as np
arr = np.array([[
[1, 3, 2, 4],
[0, 1, 0, 1],
[0, 1, 2, 3],
], [
[1, 4, 2, 3],
[1, 0, 1, 1],
[0, 1, 2, 3],
]])
print('Before:')
print(arr)
sorted_arr = np.array([a[:, a[0].argsort()] for a in arr])
print('After:')
print(sorted_arr)
Output:
Before:
[[[1 3 2 4]
[0 1 0 1]
[0 1 2 3]]
[[1 4 2 3]
[1 0 1 1]
[0 1 2 3]]]
After:
[[[1 2 3 4]
[0 0 1 1]
[0 2 1 3]]
[[1 2 3 4]
[1 1 1 0]
[0 2 3 1]]]