1. Numpy 배열의 생성과 연산
Python
2017. 8. 1. 14:29
Flearning의Python으로 Big Data 분석하기
를 기반으로 들은 내용을 정리했다
1. Numpy?
Numerical Python의 줄임말로, 고성능의 다차원 배열 객체를 다룰 때 유용하게 쓰이는 라이브러리이다.
2. Numpy 배열
2.1 배열의 생성
파이썬의 리스트로 정의될 수 있으며, 직접 정의할 수도 있다.
import numpy as np data1 = [1,2,3,4,5] np1_arr = np.array(data1) np2_arr = np.array([1,2,3,4,5])
두 배열 np1_arr, np2_arr은 1차원의 서로 같은 값을 가진 Numpy 배열이 생성된다.
이 후 np1,2_arr 들의 형태를 type(np1.arr)을 이용하여 살펴보면 <type 'numpy.ndarray'> 라는 데이터 타입으로 Numpy 배열이 생성되어 있다.
위의 방법처럼 일일이 정의해주는 것이 아닌 다양한 배열 생성함수를 제공한다.
import numpy as np a = np.zeros((2, 2)) #0으로 모두 채운 행렬 생성, 출력 '[[0, 0],[0, 0]]' b = np.ones((1, 2)) #1으로 모두 채운 행렬 생성, 출력 '[[1, 1]]' c = np.full((2, 2), 7) # 특정 수로 모두 채운 행렬 생성, 출력'[[7, 7],[7, 7]]' d = np.eye(3) # 단위행렬 생성, '[[1, 0, 0], [0, 1, 0], [0, 0, 1]]' e = np.random.random((2, 2)) #임의값으로 채운 행렬 생성, 출력'[[ 0.51192618, 0.59765307],[ 0.82372035, 0.65580727]]' f = np.arange(5, 9) #시작값부터 끝값까지 증가하는 행렬 생성, 출력 '[5,6,7,8,9]'
이렇게 numpy.ndarray 타입들은 shape를 통해 차원과, 차원의 크기를 알 수 있다.
import numpy as np np_arr = np.array([[1,2,3],[4,5,6]]) # 2차원배열을 생성 print(np_arr.shape) #출력 (2, 3)
또한 배열의 개별 값의 데이터 타입도 확인할 수 있고, 생성시에 타입을 정해줄 수도 있다.
import numpy as np arr1 = np.array([[1,2,3],[4,5,6]]) print(arr1.dtype) #출력 dtype('int32') arr2 = np.array([1.0, 4.1, 5.5], dtype=np.float64) print(arr2.dtype) #출력 dtype('float64')
2.1 배열의 연산
배열끼리, 혹은 배열과 스칼라 연산은 +, -, *, /, ** 산술연산자 모두를 지원한다.
import numpy as np arr1 = np.array([[1,2,3],[4,5,6]], dtype=np.float64) arr2 = np.array([[7,8,9],[10,11,12]], dtype=np.float64) arr1 + arr2 #출력 array([[ 8., 10., 12.], # [ 14., 16., 18.]]) arr1 - arr2 #출력 array([[-6., -6., -6.], # [-6., -6., -6.]]) arr1 * arr2 #출력 array([[ 7., 16., 27.], # [ 40., 55., 72.]]) arr1 / arr2 # 출력 array([[ 0.14285714, 0.25 , 0.33333333], # [ 0.4 , 0.45454545, 0.5 ]]) arr1 ** 0.5 #출력 array([[ 1. , 1.41421356, 1.73205081], # [ 2. , 2.23606798, 2.44948974]])
여기서 주의해야 할점은 Numpy 배열끼리의 곱과 나눗셈은 행렬의 곱이 아니라는 점이다.
또한 배열의 차원과 크기도 서로 동일해야하만 연산이 가능하다.
'Python' 카테고리의 다른 글
5. Pandas 자료구조 (0) | 2017.08.03 |
---|---|
4. Numpy를 이용한 데이터 분석 (0) | 2017.08.03 |
3. Numpy 함수 (0) | 2017.08.02 |
2. Numpy 배열 인덱싱 (0) | 2017.08.01 |
COMCBT에서 hwp를 받아오는 프로그램 (0) | 2017.07.25 |