문제 : https://moon9342.github.io/data-science-lecture-python-numpy-exercise 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고, 몇도인가요? 데이터 분석을 진행할 때 데이터의 전처리가 진행되어야 한다. 결측치 처리와 이상치 처리를 해야 한다. 결측치 처리 raw 데이터는 문제의 소지가 있을 수 있다. 데이터가 없는 경우를 의미 삭제/ 평균,최고, 최저 등으로 값 대체 이상치 처리 데이터는 존재하는데 정상범위가 아닌 데이터 삭제하거나 대체 for문을 쓰는 것보다 성능이 빠른 풀이 import numpy as np seoul2 = np.loadtxt("./data/seoul.csv", dtype=np.object, delimiter=',..
ndarray의 원소 추가와 삭제 1) concatenate() 원소 추가 ndarray에 row(s) 혹은 column(s)을 추가 하기 위한 함수 result = np.concatenate(어떤것을 서로 붙일지, 행으로 붙일지 열로 붙일지) axis=0: 행방향/ 가로방향 Python list의 원소 추가 : append() ndarray의 원소 추가 append()가 있긴 하지만 잘 쓰진 않는다. concatenate()를 더 많이 쓴다. 하나의 ndarray와 다른 ndarray 연결 arr에 new_row vector를 하단에 붙인다. 결과적으로 3 x 3 matrix 생성 import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # 2 x 3 nd..
ndarray 정렬 Numpy array는 axis를 기준으로 정렬하는 sort() 함수 제공 만약, axis를 지정하지 않으면 -1값으로 지정 => 마지막 axis np.sort() : 원본은 변하지 않고, 정렬된 결과 ndarray를 리턴 arr.sort() : 원본을 정렬, return은 None 1) 1차원 ndarray 정렬 import numpy as np arr = np.arange(10) np.random.shuffle(arr) print(np.sort(arr)) # 오름차순 정렬 (default) # ndarray는 특수한 indexing 제공 => 역순으로 정렬하기 위한 index print(np.sort(arr)[::1]) # 한칸씩 움직이기 # [0 1 2 3 4 5 6 7 8 9]..

집계함수 import numpy as np arr = np.arange(1, 7, 1).reshape(2, 3).copy() print(arr) # [[1 2 3] # [4 5 6]] print(arr.sum()) # 21 print(np.sum(arr)) # 21 print(np.cumsum(arr)) # 누적합 => [ 1 3 6 10 15 21] print(np.mean(arr)) # 3.5 print(np.max(arr)) # 6 print(np.min(arr)) # 1 print(np.argmax(arr)) # 최대값의 인덱스/ 순번 => 5 print(np.argmin(arr)) # 최소값의 인덱스/ 순번 => 0 print(np.std(arr)) # 표준편차 1.707 print(np.exp..
Transpose 전치행렬 원본행렬의 행은 열로, 열은 행으로 바꾼 행렬을 의미한다. 전치행렬의 표현은 윗첨자로 T를 이용한다. import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # 2 x 3 ndarray t_arr = arr.T # 3 x 2 ndaray # [[1 2 3] [[1 4] # [4 5 6]] => [2 5] # [3 6]] # 2 x 3 -> 3 x 2 print(arr) print(t_arr) 원본 행렬의 값을 바꾸면 전치 행렬도 바뀐다. arr[0][0] = 100 print(arr) # [[100 2 3] # [ 4 5 6]] print(t_arr) # [[100 4] # [ 2 5] # [ 3 6]] 벡터(= 1차원 ndarr..
ndarray의 사칙연산, 행렬곱, Broadcasting 사칙연산 : +, -, *, / 행렬곱 : dot product Broadcasting은 사칙연산에서만 일어나고, dot product에서는 일어나지 않는다! 1. 행렬 덧셈 python의 list에서, + 연산자는 concatenation!! ndarray에서 + 연산자는 vector, matrix 연산 ndarray의 사칙연산의 기본 전제는 shape이 같아야 연산이 성립 import numpy as np arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 2 x 3 ndarray arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 2 x 3 ndarray print(arr1) print(a..
Numpy05 - ndarray의 Indexing & Slicing 1. 1차원 ndarray import numpy as np arr = np.arange(10, 20, 1) print(arr) # [10 11 12 13 14 15 16 17 18 19] # enumerate() 함수 for (idx, tmp) in enumerate(arr): print("idx : {}, data : {}".format(idx, tmp)) # idx : 0, data : 10 # idx : 1, data : 11 # idx : 2, data : 12 # .. arr = np.arange(10, 20, 1) print(arr[3]) # 13 print(arr[1:4]) # [11 12 13] print(arr[:-1]..
ndrary의 shape 조절 함수 reshape(): 원하는 형태 (shape)으로 ndarray의 shape을 조절 rave(): 1차원 vector (1차원 ndarray)로 shape을 변형 둘 다 view만 바꿈 resize(): reshape()과 상당히 유사 reshape()은 요소가 갯수가 맞지 않으면 안되지만 resize()는 요소의 갯수가 맞지 않아도 shape이 변경된다. 1. reshape() 함수 ndarray는 shape을 가지고 있다. shape 속성의 값을 바꾸어서 ndarray의 형태를 변경하는 것은 그다지 좋지 않다. 대신, reshape() 함수를 사용한다. 1) reshape()은 새로운 ndarray를 만드는게 아니라, View를 생성한다. import numpy a..