【发布时间】: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