Numpy (tile,repeat ...)

jaeha_lee·2021년 5월 6일
0

numpy.tile ( 배열 , reps)

reps가 뭔지 아는게 제일 중요할 듯. (그냥 쉽게 말해 어떻게 쌓을건지)
일단 tile은 내가 넣은 배열을 reps 형태로 복사(?) 하는 것을 말한다.
tile이 정확히 무엇인지는 다른 블로그를 통해 확인하고 나는 예시를 통해 설명하고자 한다.

먼저 reps는 리스트나 튜플이 오게 된다.
A 라는 배열이 [10,20] 이라고 하면

import numpy as np # 뒷 내용부터 numpy를 np로 정의하겠다.
A = np.array([10,20])
# 1.len(reps) ==1
np.tile(A,[2]) # [10 20 10 20] 

#2. len(reps) ==2
np.tile(A,[2,2]) # [ [10 20 10 20] [10 20 10 20] ] , 오른쪽으로 2번 아래로 2번 복사하게 된다.
np.tile(A,[2,3]) # [ [10 20 10 20 10 20] [10 20 10 20 10 20] ]

# 3. len(reps)==3
np.tile(A, (3, 2, 3))
"""
[[[10 20 10 20 10 20]
  [10 20 10 20 10 20]]
  [[10 20 10 20 10 20]
  [10 20 10 20 10 20]]
  [[10 20 10 20 10 20]
  [10 20 10 20 10 20]]]
"""

numpy.repeat ( 배열 , repeats,axis)

  • repeats : 합치는 방법
  • axis : 합치는 방향

    같은 자리를 연속으로 만든다.

    먼저, 배열의 차원을 적는다.

    import numpy as np
    a = np.array([[1, 2, 3], [4, 5, 6]]) # shape=(2, 3), 이렇게 차원을 적는다
    #numpy.repeat 에서 axis는 해당 차원에서 몇번째 인지
    #예를들어 np.repeat(a,n,axis=1) 이라고 하면 (2,3)에서 3에 해당하는 부분을 n번 반복한다. 
    #이때 n은 해당하는 axis의 차원의 값과 같게 하거나, 하나의 값으로 모든 것들을 몇번할 것인지 
     
    np.repeat(a,2,axis=0) #[ [1 2 3][1 2 3] [4 5 6][4 5 6] ]
    np.repeat(a,(1,2),axis=0) #[[1 2 3][4 5 6][4 5 6]]
    
    np.repeat(a,2,axis=0) #[ [1 1 2 2 3 3] [4 4 5 5 6 6] ]
    np.repeat(a,(1,1,2),axis=1) #[ [1 2 3 3] [4 5 6 6] ]
    
      
    #추가적인 예시
    d = np.array([[[0, 1, 2], [3, 4, 5]]]) # shape=(1,2,3)
    np.repeat(d,2,axis=0) #[ [ [0 1 2][0 1 2][3 4 5][3 4 5] ] ]
    np.repeat(d,(1,2),axis=1) [[[0 1 2][3 4 5][3 4 5]]]
     
  • 0개의 댓글