매트랩에 익숙한 사용자가 파이썬을 사용하게 되면 불편한 점이 몇 가지가 있는데 그 중에서도 가장 불편한 것이 행렬에 관한 것이 아닐까 싶다. 행렬 생성부터 시작하여, 부분 선택, 성분 바꾸기, 행렬 확장, 행렬 연산에 이르기까지 다 불편한 것 같다. 하지만 파이썬을 쓰려면 넘파이 스타일의 행렬에 익숙해져야 한다.
넘파이에서는 행렬을 어레이(array)로 부른다. 넘파이의 어레이 클래스는 ndarray이다. n-dimensional array란 뜻이다. 고차원 어레이가 기본인 모양이다.
차원(dimension)은 우리가 일반적으로 얘기하는 행렬의 차원이다. 예를 들어서 2차원 어레이는
보통 행이 1개 또는 열이 1개인
넘파이에서는 차원을 axis 라고 부른다. axis=0 은 행이며, axis=1 은 열, axis=2 는 깊이, 이런 순서로 나간다.

먼저
어레이를 생성하려면 np.array 함수를 사용한다.
import numpy as np
A = np.array([[1,2,3], [4,5,6]])
넘파이 어레이에서 대괄호 기호 [ ]는 어레이(행렬)의 한 행으로 이해하면 된다. 그리고 대괄호 안의 성분은 열(column) 성분을 나타낸다고 보면 된다. 그래서
print(A.ndim, A.shape)
결과는 2 와 (2,3) 이 나온다.
이번에는 다음과 같이 행벡터와 열벡터를 생성해 보자.
a = np.array([[1,2,3]])
b = np.array([[1], [2], [3]])
c = np.array([1, 2, 3])
여기서 c를 보면 대괄호가 1개 있다. 이렇게 하면 1차원 어레이가 생성된다. 차원을 보면
print(a.ndim, b.ndim, c.ndim)
a와 b는 2차원, c는 1차원이다. 어레이의 모양을 보면
print(a.shape, b.shape, c.shape)
a는 (1,3), b는 (3,1), c는 (3, ) 이라고 나온다. 성분이 모두 0인 어레이는 np.zeros를 이용하여 생성한다. 다음은 1차원 어레이, 2행3열의 2차원 어레이를 생성하는 예이다. 소괄호가 두 개가 있음에 주의해야 한다.
d1 = np.zeros(2)
d2 = np.zeros((2,3))
print("d1=", d1, "\nd2=", d2)
성분이 모두 1인 어레이는 np.ones를 이용하여 생성한다. 다음은 1차원 어레이, 3행2열의 2차원 어레이를 생성하는 예이다.
e1 = np.ones(2)
e2 = np.ones((3,2))
print("e1=", e1, "\ne2=", e2)
'프로그래밍 > 파이썬' 카테고리의 다른 글
판다스(Pandas)에서 CSV파일 읽기 (0) | 2023.05.18 |
---|---|
주피터 노트북 사용법 (1) | 2021.05.05 |
넘파이(numpy)에서 행렬 연산 (0) | 2021.03.12 |
넘파이(numpy)에서 행렬 모양 바꾸기, 자르기, 확장하기 (0) | 2021.03.11 |
댓글