본문 바로가기

인공지능(AI)/인공지능

[Numpy] 슬라이싱한 2차원 이상 배열의 접근, 대입, 계산

728x90
반응형

1. 1차원 슬라이스

  • 방법: 배열[시작점:(끝-1)]
  • 끝 점은 -1된 값이 되기 때문에 주의해야 한다.
  • 예시
import numpy as np

array = np.array([1,2,3,4])
sliced = array[0:2]
#sliced -> array([1,2])

2. 2차원 슬라이스

  • 방법: [행의 시작:(행의 끝-1), 열의 시작: (열의 끝-1)]
  • 1차원하고 비슷하지만, 행과 열을 콤마로 구분해준다는 것이 차이가 있다.
  • 예시
import numpy as np

array_two_dim = np.array([[1,2,3,4],[5,6,7,8]])
sliced = array_two_dim[:,0:2]

3. 2차원 슬라이스 한 Numpy 배열에 대입

  • 만약에 2차원 배열의 일부분의 값을 대입 혹은 계산해야 하는 경우가 생긴다.
  • 그럴 경우, 2차원 배열을 슬라이싱 하게 되는데, 주의해야 할 것이 있다.
  • 바로, 차원을 주의해야 한다. matmul() 같은 행렬 연산을 위해서는 2차원 배열이 되어야 하지만, 2차원 배열에서 슬라이스 된 배열은 경우에 따라 1차원이 되기 때문이다.
  • 그럴 경우, reshape를 통해 차원을 변경해줘야 한다.
import numpy as np

def calculator():
    temp0 = 1+2
    temp1 = 3+4
    array = np.array([[temp0,temp1]])
    return array

array_two_dim = np.array([[1,2,3,4],[5,6,7,8]])
#array_two_dim의 shape는 (2,)이고, calculator의 shape는 (2,1)이기 때문에
#두 배열의 shape를 바꿔줘야 한다. 참고로, array_two_dim는 위치상 reshape를 못함
array_two_dim[:,0] = calculator().shape(-1)
반응형