如何使用numpy对3D数组的内部2d数组进行排序?



如何在3d数组中排序每个2d数组?

我有一个形状为(10, 1000, 3)的数组

我正在尝试按每个子数组的最后一列进行反向排序。

循环解决方案:

result = []
for subarr2d in arr3d:
subarr2d_sorted = subarr2d[subarr2d[:, -1].argsort()][::-1]
result.append(subarr2d_sorted)

我想单独在numpy中做这个吗?这可能吗?

您可以使用numpy.sort并选择内部的axis进行排序。

import numpy as np
result = np.random.randint(20, size=(3, 4, 3))
print(np.sort(result, axis=2))
# outputs
# [[[ 8 11 11]
#   [ 2 11 16]
#   [ 3  7 14]
#   [ 7 12 12]]
#  [[ 8 10 16]
#   [ 0  6 14]
#   [ 0 16 17]
#   [ 0 14 19]]
#  [[ 2  4  5]
#   [ 3  4  4]
#   [ 1  1 11]
#   [ 0  8 17]]]
print(np.sort(result, axis=1))
#outputs
# [[[ 7  2  7]
#   [11  3 11]
#   [12  8 11]
#   [16 12 14]]
#  [[14  6  0]
#   [16  8  0]
#   [17 14  0]
#   [19 16 10]]
#  [[ 2  1  0]
#   [ 3  4  1]
#   [11  4  4]
#   [17  8  5]]]

要按降序获得排序数组,您可以使用-np.sort(-result, axis=2),您可能还想检查numpy.flip

相关内容

  • 没有找到相关文章

最新更新