将特征图(3D 数组)拆分为 2D 数组

kma*_*o23 3 python numpy computer-vision multidimensional-array deep-learning

假设我有一个形状的特征图(即 3D 数组) (32, 32, 96)

In [573]: feature_map = np.random.randint(low=0, high=255, size=(32, 32, 96))
Run Code Online (Sandbox Code Playgroud)

现在,我想单独可视化每个特征图。所以,我想提取每个正面切片(即 shape 的二维数组(32, 32)),以便应该给出 96 个这样的特征图。

如何获取这些数组,可能不是作为内存高效的副本?由于这只是为了可视化,一个视图就足够了!

Max*_*xim 6

您可以使用np.transpose和切片操作(不创建数组的副本):

feature_map = np.random.randint(low=0, high=255, size=(32, 32, 96))
feature_map = np.transpose(feature_map, axes=[2, 0, 1])
for i in range(feature_map.shape[0]):
  print(feature_map[i].shape)  # a view of original array. shape=(32, 32)
Run Code Online (Sandbox Code Playgroud)

...或者只是切片:

for i in range(feature_map.shape[2]):
  print(feature_map[:, :, i].shape)  # a view of original array. shape=(32, 32)
Run Code Online (Sandbox Code Playgroud)