gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:04:25 25 4
gpt4 key购买 nike

如何对 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

关于python - 如何使用 numpy 对 3D 数组的内部 2d 数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66282905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com