반응형
| 파이썬 넘파이(Python Numpy)
파이썬 넘파이(Numpy)는 파이썬에서 배열과 행렬들을 효율적으로 다룰 수 있게 해 주는 패키지로서 데이터 정보학계에서 광범위하게 쓰입니다.
| 파이썬 넘파이로 배열 및 행렬 만들기(Python Numpy Array, Matrix)
다음은 넘파이에 대한 여러 예제입니다.
import numpy as np mylist = [1,2,3] # numpy array로 바구기 x = np.array(mylist) print(x) # array([1, 2, 3]) y = np.array([4,5,6]) print(y) # array([4, 5, 6]) m = np.array([7,8,9], [10,11,12]) # 행렬 만들기 print(m) '''[[ 7 8 9] [10 11 12]]''' matrix = np.array([4,2,1],[5,2,6],[1,1,1]) print(matrix) ''' [[4 2 1] [5 2 6] [1 1 1]] ''' print(m.shape) # shape를 이용하여 행렬의 차원 알아내기 ( 행, 렬 ) # (2, 3) n = np.arange(0, 30, 2) # 0부터 30까지 2씩 차이로 출력함 # array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]) n = n.reshape(3,5) # numpy 배열을 원하는 행렬로 재구성 ''' [[ 0 2 4 6 8] [10 12 14 16 18] [20 22 24 26 28]] ''' o = np.linespace(0, 4, 9) # 0에서 4까지 9개의 수를 균일한 간격으로 출력 print(o)) # [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ] t = np.linspace(1, 10, 20) print(t) ''' [ 1. 1.47368421 1.94736842 2.42105263 2.89473684 3.36842105 3.84210526 4.31578947 4.78947368 5.26315789 5.73684211 6.21052632 6.68421053 7.15789474 7.63157895 8.10526316 8.57894737 9.05263158 9.52631579 10. ] ''' o.resize(3, 3) # o 배열을 3씩 나눈 리스트들의 행렬로 형태 바꾸기 print(o) ''' [[ 0. 0.5 1. ] [ 1.5 2. 2.5] [ 3. 3.5 4. ]] ''' np.ones((3, 2)) # 1로 가득찬 3x2 행렬 만들기 print(np.ones((3,2))) ''' [[ 1. 1.] [ 1. 1.] [ 1. 1.]] ''' np.zeros((2, 3)) # 0으로 가득찬 2x3 행렬 만들기 print(np.zeros((2,3))) ''' [[ 0. 0. 0.] [ 0. 0. 0.]] ''' eye = np.eyes(3) # 크기가 3x3인 단위행렬 만들기 print(eye) ''' [[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]] ''' diag = np.diag(y) # 배열을 사선형의 행렬데이터로 변환 print(diag) ''' [[4 0 0] [0 5 0] [0 0 6]] ''' rep = np.array([1, 2, 3] * 3) # 배열 반복 print(rep) # [1 2 3 1 2 3 1 2 3] rep1 = np.repeat([1, 2, 3], 3) print(rep1) # [1 1 1 2 2 2 3 3 3] rep2 = np.repeat(['a','b','c'],4) print(rep2) # ['a' 'a' 'a' 'a' 'b' 'b' 'b' 'b' 'c' 'c' 'c' 'c'] p = np.ones([2, 3]) v = np.vstack([p, 2*p]) # 행렬을 수직으로 결합 print(v) ''' [[ 1. 1. 1.] [ 1. 1. 1.] [ 2. 2. 2.] [ 2. 2. 2.]] ''' h = np.hstack([p, 2*p]) # 행렬을 수평으로 결합 print(h) ''' [[ 1. 1. 1. 2. 2. 2.] [ 1. 1. 1. 2. 2. 2.]] '''
| 파이썬 넘파이 연산(Python Numpy Operation)
넘파이 자료구조 간의 연산 예제입니다.
x = np.array([1,2,3]) y = np.array([4,5,6]) print(x + y) # 요소끼리의 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱 print(x - y) print(x * y) print(x / y) print(x**2) ''' [5 7 9] [-3 -3 -3] [ 4 10 18] [ 0.25 0.4 0.5 ] [1 4 9] ''' x.dot(y) # dot product 연산 1*4 + 2*5 + 3*6 # 32 z = np.array([y, y**2]) print(len(z)) # 행렬의 행 수 # 2 print(z) ''' [[ 4 5 6] [16 25 36]] ''' t = z.T # 전치연산 (transpose) print(t) ''' [[ 4 16] [ 5 25] [ 6 36]] ''' z.dtype # 요소의 데이터 타입 보기 # dtype('int64') z = z.astype('f') # 요소의 데이터 타입 바꾸기 z.dtype # dtype('float32')
| 넘파이 인덱싱, 슬라이싱(Python Numpy Indexing, Slicing)
넘파이 인덱싱과 슬라이싱 예제입니다.
s = np.arange(13)**2 print(s) # [ 0 1 4 9 16 25 36 49 64 81 100 121 144] a, b, c = s[0], s[4], s[-1] # 인덱싱 print(a, b, c) # 0 16 144 s[1:5] # [1 4 9 16] s[-4:] # [81, 100, 121, 144] s[-5::-2] # 오른쪽에서 5번째 숫자에서부터 왼쪽 방향으로 2씩 데이터 출력하기 # [64, 36, 16, 4, 0] r = np.arange(36) r.resize((6, 6)) old = np.array([[1,1,1], [1,1,1]]) new = old new[0, :2] = 0 # 첫번째 행의 2열까지 0으로 만들기 print(r) print(old) ''' [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23] [24 25 26 27 28 29] [30 31 32 33 34 35]] [[0 0 1] [1 1 1]] ''' r[2, 2] # 2행 2열의 요소 접근 # 14 r[3, 3:6] # 3행의 3열부터 5열까지의 요소 접근 # [21, 22, 23] r[:2, :-1] # 1~2행과 1~5행까지 접근 (-1은 맨 오른쪽 열을 의미) ''' [[ 0 1 2 3 4] [ 6 7 8 9 10]] ''' r[-1, ::2] # 마지막행에서 0부터 오른쪽 방향으로 2씩 데이터 출력 # [30, 32, 34] print(r>30) ''' [[False False False False False False] [False False False False False False] [False False False False False False] [False False False False False False] [False False False False False False] [False True True True True True]] ''' r[r>30] # r 행렬에서 30보다 큰 숫자들의 리스트 ( r> 30에서 True, False로 데이터 결정 ) # [31, 32, 33, 34, 35] r[r>30] = 30 print(r) ''' [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23] [24 25 26 27 28 29] [30 30 30 30 30 30]] '''
반응형
'파이썬 > 파이썬 데이터 분석' 카테고리의 다른 글
[Python, 데이터분석] 데이터 프레임 합치기, 조인 예제(DataFrame Join, Merge) (0) | 2018.12.02 |
---|---|
[Python, 데이터분석] 파이썬 판다스(Python Pandas), 시리즈(Series), 데이터프레임(Python Dataframe) (0) | 2018.11.26 |
[Python 데이터 분석] 파이썬 람다 ( Python lambda ) (0) | 2018.11.23 |
[Python 데이터 분석] 파이썬 날짜 처리 ( Python Dates and Times ) (0) | 2018.11.22 |
[Python 데이터 분석] 파이썬 딕셔너리 (Python Dictionary) (0) | 2018.11.22 |
이 글을 공유하기