【问题标题】:Sort 3D array using sort indices of a 2D array使用 2D 数组的排序索引对 3D 数组进行排序
【发布时间】:2022-09-23 02:48:20
【问题描述】:

我有 2D 和 3D numpy 数组。 2d 数组 A 具有形状 (N, 3),3d 数组 B 具有形状 (N, 3, 3)。我想对A 沿axis=1 进行排序,然后将相同的排序应用于数组B 沿axis=2 排序。

我知道我能做到

sort_idxs = np.argsort(A, axis=1)

但后来我不知道如何以我需要排列B 的方式应用sort_idxssort_idxs 的形状为 (N, 3),类似于 A。不知何故,我需要将sort_idxs 的第一个维度映射到B 的第一个维度,将sort_idxs 的第二个维度映射到B 的第三个维度,并忽略B 的第二个维度。我怎样才能做到这一点?

    标签: python arrays numpy


    【解决方案1】:

    这可以使用解决

    sort_idxs = np.argsort(A, axis=1)
    B_sorted = np.take_along_axis(B, sort_idxs[:, np.newaxis, :], axis=2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2023-03-31
      • 2015-05-13
      相关资源
      最近更新 更多