代码之家  ›  专栏  ›  技术社区  ›  pfc

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

  •  1
  • pfc  · 技术社区  · 8 年前

    我正在使用 skimage.transform.resize 180x180

    例如:

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

    结果的形状,即。 x (16x16x3) x 表示通道。然而,我希望在比赛中取得好成绩 (3x16x16)

    谢谢大家帮助我!

    1 回复  |  直到 8 年前
        1
  •  3
  •   sascha    8 年前

    那是numpy的工作 rollaxis numpy也是scikit形象的核心。

    或者更直观一些: 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