PYTHON

[빅데이터 분석] 2021.12.21 Numpy

죠으니 2021. 12. 21. 18:39

<Numpy arrays>
import numpy as np
▶1D array : axis0 / axis는 축이다
2D array : axis0, axis1 / 대괄호[]를 두번 열고 들어가면 2차원이라고 본다.
3D array : axis0, axis1, axis2 / 2차원이 두개 들어가 대괄호 3개면 3차원.

<Creating arrays>
▶a = np.array([1,2,3])
☞ numpy의 데이터를 다루는 저장소가 array다.
☞ 리스트랑 비슷. 리스트는 1차원이고 array는 계속 늘어날 수 있다는게 차이점

<initial Placeholders>
np.zeros((3, 4)) zero니깐 0이 들어감

np.ones((2, 3, 4), dtype=np.int16)
☞ (2, 3, 4) 3행4열이 두개있다는 것
☞ int16이건 메모리를 차지한다는 얘기
▶np.arange(10, 26, 5) 10이 시작점 26이 끝점 5가 스텝
▶np.arange(30).reshape(5,6)

☞ reshape(5,-1)이면 총 30개니 뒤에 6열이 될 수 밖에 없다. -1이 숫자를 보고 자동화해주는 것
▶np.linspace(0, 2, 9)
☞ 0부터 2까지 9칸으로 나눈것. 알아서 구간을 나눠졌음

np.full((2, 2), 7) 2행2열 7의 데이터를 넣어라
np.eye(2) identity matrix 는 대각선이 1이고 반대 대각선이 0인 것

np.random.random((2, 2)) 랜덤값을 생성해주는 것. 실행할 때마다 다른값 나옴
▶np.random.seed( ) 랜덤값을 실행할 때마다 같은 값으로 고정

<Inspecting your array>
▶b.ndim
☞ ndim 차원 수를 보여줌
▶e.size 갯수를 세는 것

▶print('vec의 차원 :',vec.ndim 차원 출력

<Array Mathmatics>
(1) Arithmatic Operations
▶np.multiply(a,b) 곱하기
▶np.sqrt(b) 제곱근(루트 씌운다)
▶e.dot(f) 행렬 내적    e와 f 내적
☞ 내적하려면 두 개가 (2.2) 이렇게 행열구조가 같아야 함.
(2)Comparison
▶a == b 같은 위치에 같은게 있으면 True 라고 나옴

▶np.array_equal(a, b) 두개가 같냐를 묻는 것
(3)Aggregate Function
Aggregate가 나오면 통계적인 이야기가 나옴
▶b.max(axis=0) 행 기준 최대값

☞ 1.5와 4 중 4가 크니 4가 들어가고 2와 5 중 5가 크니 5가 들어감
▶b.cumsum(axis=1) 열 기준 누적합, 컬럼 방향으로 누적됨

▶np.std(b) b의 표준편차

<Copying Arrays>
▶ a.copy() a를 카피했으면 a값이 변해도 h가 변하지 않게 된다. 원본데이터가 달라져도 변하지 않아 좋음
a.view()원본데이터가 달라지면 변한다.
▶c.sort(axis=0) 정렬

<Subsetting, Slicing>
(1)Slicing
▶a[::-1] 역순 정렬

<Array Manipulation>
(1)Transposing Array
▶np.transpose(b) or i.T == 행열 바꾸기
(2)Changing Array Shape
▶b.ravel() flatten the array 차원을 축소시킨다는 것

▶g.reshape(3, 2) 2행3열을 3행2열로 바꾸는 것
(3)Adding/Removing Elements
▶np.append(h, g) h,g 이어붙이기
▶np.insert(a, 1, 5) a에서 1번째에 5를 넣는것
▶np.delete(a, [2]) a의 세번째 삭제하는 것
(4)Combinating Arrays
▶np.concatenate((a, d), axis=0) a와 d 배열 합치기
▶a = np.array([5, 7, 9])
b = np.array([(1.5, 2 , 3), (4, 5, 6)], dtype=float)
v : vertical수직적인 h : horizontal수평적인
np.vstack((a, b)) 수직적으로 붙임

np.hstack((e, f)) 수평적인 일 할 때 h가 붙음

(5)Splitting Arrays
▶np.hsplit(a, 3)
☞ a 배열을 수평 축(열 방향, column-wise)으로 3개의 배열로 분할

[array([5]), array([7]), array([9])]

▶np.vsplit(c, 2) c를 두개로 수직적으로 나눈다는 뜻