簡単にnumpyを使うtile()

2909 ワード

NumPyモジュールには関数tile(A,reps)機能があります.Aを各次元にコピーするパラメータ:A:コピーするリストreps:各軸に沿って繰り返す回数を表します.
例えばA=[1,2]でtile(A,2)を実行した場合の結果は[1,2,1,2]であり,x軸に2回繰り返すと理解できる.
>>> A = array([1,2])
>>> tile(A,2)
array([1,2,1,2])

Aが1つのトレーニングサンプルとして、3つ以上のトレーニングサンプルを含むトレーニングサンプルセットを構築したい場合は、NumPyのtile関数を使用します.方法は次のとおりです.
>>> tile(A,(3,1))

結果は次のとおりです.
array([[1,2],[1,2],[1,2]])

ここでreps(すなわち中の(3,1))には2つのパラメータ(一応パラメータと呼ぶ)が付いており、ほとんどの場合tile関数で十分なニーズを満たすことができますが、repsには多くのパラメータが付いており、数字が表す意味はいったい何なのかを発見することがあります.以下はtileに対するいくつかの理解です.
まず、次元が1のリスト[1,2]と次元が2のリスト[[1,2]](次元がどれだけかっこを見ているか)を作成します.
>>> from numpy import*
>>> a = array([1, 2])
>>> b = array([[1, 2]])

numpyについてtile(A,reps)の中のrepsパラメータ:
1.repsのパラメータ個数≧リスト次元の場合、いくつかのパラメータは数次元リスト(中括弧数に注意):
>>> tile(a,(1)) //    tile(a,1)
array([1, 2])
  reps      1 =     1

>>> tile(a,(1,1))
array([[1, 2]])
    2 >     1


>>> tile(a,(1,1,1))
array([[[1, 2]]])
    3 >     1

2.パラメータ個数<リスト次元の場合、最小次元はパラメータ個数に等しい
>>> tile(b,(1))
array([[1, 2]])
reps      1,   2,   2   

>>> tile(b,(1,1))
array([[1, 2]])

>>> tile(b,(1,1,1))
array([[[1, 2]]])
      3 >     2,   1            ,    3   

3.最も右のパラメータが最も深いリストのコピー回数に対応する:
>>> tile(a,(1,3))
array([1, 2, 1, 2, 1, 2])

       3,          [1,2]      [1,2,1,2,1,2]

>>> tile(b,(1,3))
array([[1, 2, 1, 2, 1, 2]])

4.右からn番目のパラメータは、最後からn番目のレイヤリストのコピー回数に対応します.
         ,      ,           1,      2    2,      2     2 
>>> tile(a,(2,1))
array([[1, 2],
        [1, 2]])

>>> tile(a,(3,1))
array([[1, 2],
        [1, 2],
        [1, 2]])

5.あるいは、repsのパラメータについて、左側から見ると、最後のパラメータが最も深いリストをコピーする以外に、リスト全体を何度もコピーすることを理解することができます.
例:
tile(a,(2,1,3))
a   [1,2]   2   [[1,2],[1,2]],   1    [[[1,2],[1,2]]],           3 (    X   ),  [[[1,2,1,2,1,2],[1,2,1,2,1,2]]]

pythonコマンドラインは次のとおりです.
>>> tile(a,(2,1,3))
array([[[1, 2, 1, 2, 1, 2]],
   [[1, 2, 1, 2, 1, 2]]])

多くの例を見れば理解できます.
>>> a = array([0, 1, 2])
>>> tile(a, 2)
array([0, 1, 2, 0, 1, 2])
>>> tile(a, (2, 2))
array([[0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2]])
>>> tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2]],
       [[0, 1, 2, 0, 1, 2]]])

>>> b = array([[1, 2], [3, 4]])
>>> tile(b, 2)
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])
>>> tile(b, (2, 1))
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

>>> c = array([1,2,3,4])
>>> tile(c,(4,1))
array([[1, 2, 3, 4],
       [1, 2, 3, 4],
       [1, 2, 3, 4],
       [1, 2, 3, 4]])