python: 如何改变 skimage resize 输出的形状

python: how to change shape of the output of skimage resize

我正在使用 skimage.transform.resize。假设一个图形是 180x180 像素,有 3 个通道。

例如:

from skimage.transform import resize
x = resize(im, (16, 16))

结果的形状,即x(16x16x3)。即x的第三维表示通道。但是,我希望得到形状为 (3x16x16) 的结果。也就是说,我需要数组的第一个维度来表示通道。我怎样才能做到这一点?

谢谢大家对我的帮助!

这是 numpy 的工作 rollaxis,numpy 也是 scikit-image 的核心。

编辑: 或者更直观:np.moveaxis.

代码:

import numpy as np

a = np.arange(48).reshape((4, 4, 3))
print(a)
print(a.shape)

b = np.rollaxis(a, 2)  # complete roll as 3rd argument void -> start=0
# or: b = np.moveaxis(a, 2, 0)
print(b)
print(b.shape)

print(a[2,3,0])
print(b[0,2,3])

输出:

[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]
  [18 19 20]
  [21 22 23]]

 [[24 25 26]
  [27 28 29]
  [30 31 32]
  [33 34 35]]

 [[36 37 38]
  [39 40 41]
  [42 43 44]
  [45 46 47]]]
(4, 4, 3)
[[[ 0  3  6  9]
  [12 15 18 21]
  [24 27 30 33]
  [36 39 42 45]]

 [[ 1  4  7 10]
  [13 16 19 22]
  [25 28 31 34]
  [37 40 43 46]]

 [[ 2  5  8 11]
  [14 17 20 23]
  [26 29 32 35]
  [38 41 44 47]]]
(3, 4, 4)
33
33