【问题标题】:Sort multidimensional np.array with given indices along an axis沿轴使用给定索引对多维 np.array 进行排序
【发布时间】:2020-11-16 00:25:16
【问题描述】:

假设我有一个形状为 (1,28,28,128) 的 np.array,它是 ResNet50 层的输出。我想可视化最强的 64 个特征图,如何对 np.array 进行排序?

这是我所做的,但它给了我想要的东西,但是,它不会对 np.array 进行排序。

feature_maps = np.random.rand(1,28,28,128)
idx = np.argsort(-1*np.sum(feature_maps,axis=(0,1,2)))
for i in range(64):
   plt.subplot(8, 8, i + 1)
   plt.imshow(normalize(feature_maps[:, :, idx[i]]), "gray")
   plt.axis("off")

有没有一种简单的方法可以沿轴使用已知索引对 np.array 进行排序,例如上面的 idx?

【问题讨论】:

  • 使用np.sort 进行排序。 np.argsort 为您提供对数组进行排序的索引。正如您所做的那样,在临时数组上调用 np.argsort 没有任何用处。
  • 感谢您的快速回复。我尝试根据 128 个平面中每个平面上元素的总和对 ndarry 进行排序,而不是简单地根据元素沿轴的值对它们进行排序。 np.argsort 确实给出了有意义的返回,它给出了一个顺序索引,可用于从 ndarry 中按降序检索平面

标签: python numpy sorting keras


【解决方案1】:

np.sort 无法完成所描述的工作,仍然可以通过切片实现目标,如下所示:

feature_maps_sorted = feature_maps[:,:,:,idx]

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 2020-01-15
    • 2013-12-30
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多