주요 내용

넘파이 어레이와 관련된 다양한 함수들의 활용 예제들을 살핀다.

연습문제

아래 모양의 어레이를 생성하라. 단, 3줄 이내로 코딩해야 한다.

[[1, 1, 1, 1],
 [1, 1, 1, 1],
 [1, 1, 1, 2],
 [1, 6, 1, 1]]

힌트: np.ones 함수와 인덱싱 활용.

np.diag() 함수 활용

np.diag() 함수는 최대 2개의 인자를 받는다.

np.diag(v, k=0)

  • v: 1차원 또는 2차원 어레이 (리스트, 튜플 가능)

    • v가 2차원 어레일 때: 해당 어레이의 k 번째 대각선을 1차원 어레이로 리턴한다.
    • v가 1차원 어레일 때: 해당 어레이를 k 번째 대각선으로 갖는 2차원 어레이를 리턴한다.
  • k : 정수 (옵션 키워드 인자)

    • k 번째 대각선을 의미함.
    • k > 0 인 경우: 중앙 대각선에서 윗쪽으로 k번째 위치한 대각선
    • k < 0 인 경우: 중앙 대각선에서 아랫쪽으로 k번째 위치한 대각선

예제


In [108]:
x = np.arange(9).reshape((3,3))
x


Out[108]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [109]:
np.diag(x)


Out[109]:
array([0, 4, 8])

In [110]:
np.diag(x, k=1)


Out[110]:
array([1, 5])

In [111]:
np.diag(x, k=-1)


Out[111]:
array([3, 7])

In [112]:
np.diag(np.diag(x))


Out[112]:
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])

In [114]:
np.diag(np.diag(x, k=-1), k=1)


Out[114]:
array([[0, 3, 0],
       [0, 0, 7],
       [0, 0, 0]])

연습문제

아래 모양의 어레이를 생성하라. 단, 3줄 이내로 코딩해야 한다.

[[0., 0., 0., 0., 0.],
 [2., 0., 0., 0., 0.],
 [0., 3., 0., 0., 0.],
 [0., 0., 4., 0., 0.],
 [0., 0., 0., 5., 0.],
 [0., 0., 0., 0., 6.]]

In [115]:
np.diag(np.arange(2, 7), k=-1)


Out[115]:
array([[0, 0, 0, 0, 0, 0],
       [2, 0, 0, 0, 0, 0],
       [0, 3, 0, 0, 0, 0],
       [0, 0, 4, 0, 0, 0],
       [0, 0, 0, 5, 0, 0],
       [0, 0, 0, 0, 6, 0]])

연습문제

아래 모양의 어레이를 생성하라. 단, 3줄 이내로 코딩해야 한다.

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

힌트: np.tile 함수 활용법을 숙지해야 한다. dir?를 이용하여 tile 함수의 주석(docstring)을 확인해보자. 또한 np.arange 함수, reshape 어레이 메소드 등을 활용할 수 있다.