首页 > 解决方案 > 沿轴使用给定索引对多维 np.array 进行排序

问题描述

假设我有一个形状为 (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 ?

标签: pythonnumpysortingkeras

解决方案


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

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


推荐阅读