Python:Numpyのtile関数

7998 ワード

Python:Numpyのtile関数
  • tile関数
  • tile関数の適用例
  • 1一次元拡張例
  • マトリックス拡張例
  • 3補足説明

  • tile関数
    numpyの公式の説明1によると、tile関数の役割は:
    Construct an array by repeating A the number of times given by reps.
    If reps has length d, the result will have dimension of max(d, A.ndim).
    If A.ndim < d, A is promoted to be d-dimensional by prepending new axes. So a shape (3,) array is promoted to (1, 3) for 2-D replication, or shape (1, 1, 3) for 3-D replication. If this is not the desired behavior, promote A to d-dimensions manually before calling this function.
    If A.ndim > d, reps is promoted to A.ndim by pre-pending 1’s to it. Thus for an A of shape (2, 3, 4, 5), a reps of (2, 2) is treated as (1, 1, 2, 2).
    Note : Although tile may be used for broadcasting, it is strongly recommended to use numpy’s broadcasting operations and functions.
    簡単に言えばtile関数の役割は配列Aをrepsを回数として拡張することである.repsはマトリクスでもよい.最も生成された配列の次元はAとrepsの両方の次元の最大値である.またtile関数はnumpyのarray構造を生成するため、arrayはpythonがlistを持参するなどのタイプとは異なり、arrayの要素は同じデータ型に属する必要があります.異なるタイプの場合は強制的に変換されます.
    tile関数の適用例
    1次元拡張の例
    // An highlighted block
    from numpy import tile
    a = [0,1,2]
    b = tile(a,3)
    b
    

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

    その結果,一次元ベクトル[0,1,2]が一次元ベクトル[0,1,2,0,1,2,0,1,2]に拡張されることが分かる.
    2マトリクス拡張例
    repsはマトリクスの例です.
    // An highlighted block
    from numpy import tile
    a = [['A','B'],['C','D']]
    b = tile(a,(2,3))
    b
    

    出力の結果は次のとおりです.
    array([['A', 'B', 'A', 'B', 'A', 'B'],
           ['C', 'D', 'C', 'D', 'C', 'D'],
           ['A', 'B', 'A', 'B', 'A', 'B'],
           ['C', 'D', 'C', 'D', 'C', 'D']], dtype=')
    

    結果として、(2,2)の大きさの2次元行列aを(4,6)の大きさの2次元行列bに拡張することが分かる.関数構文に対応して、すなわちreps[0]がA行列の行数サイズを拡張し、reps[1]がA行列の列数サイズを拡張する.
    3補足説明
    配列を生成する変数Aが要素が異なるタイプのリストリストリストまたはメタグループtupleである場合、強制タイプ変換が行われます.
    // An highlighted block
    from numpy import tile
    a = [0,'a']
    b = tile(a,3)
    b
    

    出力された結果は次のとおりです.
    array(['1', 'a', '1', 'a', '1', 'a'], dtype=')
    

    https://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html#numpy.tile ↩︎