본문 바로가기
Python/PythonLibrary

Numpy 라이브러리 ( 생성하기 / 속성 확인하기 / 타입 변경하기 / 배열 연산하기 / 정렬하기 / 인덱싱과 슬라이싱 / 겹합하기)

by leehii 2022. 6. 3.

 

ㅁ 넘파이 라이브러리

ㅇ list의 형태를 하고있으나 같은 타입의 데이터만 들어갈 수 있다는 차이점

 



ㅇ 넘파이 생성하기

 

도구 불러오기

 import numpy as np

 

 

이후ndarray 생성하기!

array변수명 = np.array(인자값)



1차원    ( [ ] )
2차원  ( [   [ ],  [ ]   ] )
3차원 = ( [   [   [ ] , [ ]   ] ,  [   [ ] , [ ]   ]   ]  ) 

 

 



 특정한 값으로 배열 생성하기


np.zeros()

-->> 배열 안 값 1로 초기화


np.ones()

-->> 배열 안 값 2로 초기화



np.full((행,열).원하는 값)

-->> 배열 안 값 원하는 값으로 초기화

 

 



○ ndarray 객체 속성 확인하기

배열명.shape

-->> 배열 크기 (1차원은 데이터 개수,  2차원은 행열 개수)

몇행 몇열의 배열인지 확인  

pandas에서도 동일 사용가능

 


배열명.size

-->> 내부 데이터 전체 개수 확인

 


배열명.ndim

-->> 몇 차원인지 확인

 

data명.dtype 

: 데이터가 어떤 자료형인지 확인 (int, float 등등)

 

np.bincount(data명) 

: 내부 원소에 대한 빈도수를 확인 ->

pandas에서는 Series명.value_counts()가 같은 기능 (Series 형태에서만 사용가능)

 

np.unique( )

: 내부의 고유한 원소를 확인하는 함수

 

return_index = True

를 주면  해당 원소들의 인덱스 번호를 리턴함

 

return_counts = True

를 주면  해당 원소들의 갯수를 리턴함 

즉 np.bincount( )를 한것과 동일한 효과

 

 

 


배열명.dtype

-->> 무슨 타입인지(int등)

 

 

 


○ arange함수로 ndarray배열 생성하기

array배열명 = np.arange(시작값, 종료값+1, 증감값) 

 

array배열명 = np.arange(start = 시작값, stop = 종료값+1, 증감값) 


일정범위를 한번에 배열로 생성할 수 있음

 

 

 

 

○ ndarray  배열 타입 

 

array배열명 = array.reshape(행, 열)

 

행, 열 인자값에 -1을 넣으면 알아서 호환되는 형태로 만들어줌 (호환안되는 형태는 오류 뜸)

 

array = np.arange(10)

 

array  리턴값 : [0 1 2 3 4 5 6 7 8 9]

 

array_re = array.reshape(2,5)

 

array_re 리턴값 :

[   [ 0 1 2 3 4 ]   

     [ 5 6 7 8 9 ]    ]

 

array_re2 = array.reshape(5,2)

 

array_re2 리턴값 :

[ [0 1]

  [2 3] 

  [4 5]

  [6 7]

  [8 9]  ]

 

 

 

 

○ ndarray  배열 타입 

타입을 지정해서 배열 생성 하기>>

array배열명 .dtype(원하는 타입)


np.array([데이터값], dtype = np.원하는타입)
np.array([1.1, 2.2], dtype = np.int64) --> 결과값이 정수형으로 나옴



배열의 타입 변경하기 >>

array배열명.astype

 

 

 


○ 배열간 연산

배열에 배열을 연산할경우(배열+배열 ...etc) 인덱스의 값끼리 연산이 진행되고
배열에 숫자를 연산할 경우(배열+배열 ...etc) 각 요소에 그 숫자가 연산됨

 

 


○ numpy의 인덱싱, 슬라이싱

리스트함수에서는 .append(추가데이터)를 통해 마지막에 데이터추가, 
혹은 . append(데이터,추가할 인덱스)를 통해 원하는 위치에 추가는 가능하나
한번에 추가는 불가능했음.
numpy는 범위슬라이싱으로 해당범위에 하나씩 추가가 가능함


:를 써주면 모든 범위를 불러온다는 뜻

 

○ numpy의 beelean 인덱싱

>> ndarray 인덱스의 [ ] 내에 조건문을 작성해준다

 

array = np.arange(1, 10)

bool_array = array[ array > 5 ]

bool_array 리턴 값 : [6 7 8 9]

 

 

○ 정렬하기

 

np.sort() : 원 데이터는 유지 / 정렬된 행렬을 리턴함

ndarray.sort() : 원 데이터를 정렬한 채로 리턴함

 

 

○ 행열 위치 바꾸기

새array배열명 = np.transepose(바꿀 array배열명)

 

 

○ 배열 합치기

새array배열명 = np.concantenate( [arr1, arr2, ...] )

 

○ NPZ파일로 변환 (Numpy ZIP)


np.savez_compressed(
    '?.npz',
    X_train = X_train, 
    X_test = X_test,
    y_train = y_train,
    y_test = y_test) #  좌측 : 변수명 / 우측 : 실제 만든 데이터