NumPy 기초: 리스트, 배열, 행렬

NumPy 불러들이기

NumPy 라이브러리를 사용하려면 파이썬에서 불러들여야 합니다. 아래 명령을 사용합니다.

from NumPy import *

리스트

리스트는 파이썬의 기본 기능입니다. 여러 개의 값을 하나로 묶어서 다룰 수 있습니다.

>>> a = [1,2,3]
>>> a
[1,2,3]
>>> b = range(1,10) # 1이상 10미만의 값을 가지는 리스트
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> len(a) # a의 길이
3
>>> len(b) # b의 길이
9
>>> b[0] # b의 첫째 원소
1
>>> b[1] # b의 2번째 원소
2
>>> b[2] # b의 3번째 원소
3
>>> b[0:3] # b의 첫째부터 4번째 원소 전까지
[1, 2, 3]
>>> b[:5] # b의 처음부터 6번째 원소 전까지
[1, 2, 3, 4, 5]
>>> b[5:] # b의 6번째 원소부터 끝까지
[6, 7, 8, 9]
>>> b[-1] # b의 끝에서 첫째 원소
9
>>> b[-2] # b의 끝에서 2번째 원소
8
>>> b[-5:] # b의 끝에서 5번째 원소부터 끝까지
[5, 6, 7, 8, 9]

중첩 리스트


리스트 안에 다시 리스트를 넣을 수도 있습니다.

>>> a = [ [1,2,3], [4,5,6] ]
>>> len(a)
2
>>> a[0]
[1, 2, 3]
>>> a[1]
[4, 5, 6]
>>> a[0][1] # 1번째 리스트의 2번째 원소
2

배열

배열(array)은 리스트와 사용법이 비슷합니다. 대신 직접 수학계산을 할 수 있습니다. 배열은 리스트에 array 함수를 적용하여 만듭니다.

>>> a = array([1,2,3,4])
>>> a
array([1, 2, 3, 4])
>>> len(a)
4
>>> a[1]
2

배열은 서로 더하거나 빼거나 곱하거나 나눌 수 있습니다.

>>> a = array( [1,2,3,4] )
>>> b = array( [5,6,7,8] )
>>> a+b
array([ 6,  8, 10, 12])
>>> a-b
array([-4, -4, -4, -4])
>>> a*b
array([ 5, 12, 21, 32])

다차원 배열

다차원 배열은 중첩 리스트와 비슷합니다. 다차원 배열을 만드는 방법은 기존의 배열을 변경하거나 중첩리스트에 array 함수를 적용하여 만듭니다.

>>> a = array( [1,2,3,4] )
>>> a
array([1, 2, 3, 4])
>>> A = a.reshape(2,2)
>>> A
array([[1, 2],
       [3, 4]])
>>> B = array([ [1,2],[3,4] ])
>>> B
array([[1, 2],
       [3, 4]])

다차원 배열에서 원소의 위치를 가리키는 방법은 중첩리스트와 다릅니다.

>>> a = [ [1,2],[3,4] ] # 중첩 리스트
>>> a[1][0] # 2번째 리스트의 1번째 원소
3
>>> A = array(a)
>>> A[1,0] # 2열 1행의 원소
3

행렬

행렬(matrix)은 리스트나 배열에 mat 함수를 적용하여 만듭니다.

>>> mat([[1,2],[3,4]])
matrix([[1, 2],
        [3, 4]])

행렬의 사용법은 배열과 거의 동일합니다. 다만 배열과 달리 곱셈을 할 때 원소끼리 곱셈이 아니라 행렬의 곱셈을 합니다.

>>> A = array([1,2,3,4]).reshape(2,2)
>>> A
array([[1, 2],
       [3, 4]])
>>> B = array([1,0,0,1]).reshape(2,2)
>>> B
array([[1, 0],
       [0, 1]])
>>> A*B           # 배열의 곱셈
array([[1, 0],
       [0, 4]])
>>> M = mat(A)
>>> N = mat(B)
>>> M*N          # 행렬의 곱셈
matrix([[1, 2],
        [3, 4]])