꾸준히 하고싶은 개발자

numpy 본문

python/BigdataAnalysis

numpy

프라우스 2022. 9. 18. 16:10

배열(array)

배열(array): 같은 타입의 변수들로 이루어진 순서가 있는 집합이다.
위치를 가리키는 숫자는 인덱스(index)라고 하며, 각각의 값은 배열 요소(element)라고 한다.
예> num=[ 3, 5, 7, 81 ]  
크기 고정
파이썬 미지원 -> 리스트로 대체한다.

리스트(list)

배열과 유사하나 크기가 가변적이다. (리스트에 원소의 추가,삭제가 가능)
파이썬에서의 리스트는 어떤 원소 타입이라도 저장할 수 있다.
Ex> num=[1,2,’사과’,4,5]
        num.append(7) 

배열과 리스트는 각각 장점/단점이 존재

 

수 또는 변수등을 직사각형 모양으로 배열한 것. (수를 원소로 지니는 다차원 배열이다.)     

 (2행 3열) 2*3 행렬

행렬의 예


행(Row)-가로, 열(Colum)-세로
파이썬 에서 list 형태로 표현  시 
   [ [1, 9, -13], [20, 5, 16] ]

행렬의 예1                                                                                                                                        

 2019년 손세정제 마스크
상반기 300 500
하반기 4500 1000

                           +

2020년 손세정제  마스크
상반기 3000 5000
하반기 400000 110000

=

2년치합산 손세정제 마스크
상반기 3300 5500
하반기 44500 11000

행렬의 예2

  음료수 커피
생산계획1 3 4
생산계획2 5 2

                            *

  판매가격
음료수 200
커피 100

                                =

  판매가격
생산계획1 (3*200) +(4*100) = 1000
생산계획2 (5*200)+(2*100)=1200

 

Numpy 

다차원 배열처리를 위한 파이썬 외부 라이브러리
pandas, matplotlib 라이브러의 기반
빠르다, 강력하다. 간결하다. –모든 데이터 분석의 기본 라이브러리
예>모든 원소에 1씩 더해서 새로운 리스트 만들기

#list 사용시 

list=[1,3,5,7,9]

list2=[]

for i in range(len(list1)):

    list2.append(list1[i]+1

#numpy 사용시 

import numpy as  np

list1=[1,3,5,7,9]

nplist=np.array(list1)

nplist2=nplist+1

numpy 

numpy에서 다루는 데이터는 배열임으로 모든 원소는 같은 자료형이어야 한다.
axis는 차원(축)을 의미. 즉, axis=0은 행, axis=1 열
shape: 차원의 구조(행,열)
dtype: 배열에 저장된 자료형
size: 크기

numpy 연산

 

numpy 연산

numpy 브로드캐스트

서로 다른 형태의 배열 연산 시 발생: 형태가 다른 배열을 연산할 수 있도록 배열의 형태를 동적으로 변환한다.

numpy브로드캐스트

numpy 초기화

np.array(리스트) : numpy 형태로 변환
arange(범위) : 범위 데이터 만들기
0으로 배열 만들기 : zeros((행,렬),dtype=데이터 타입) 예> np.zeros((4,4),dtype=int)
1로 배열 만들기 : ones() , zeors 와 동일한 사용법
random.randint(0, 10, (2, 3) ) : 0부터 9까지 랜덤으로 2*3배열을 만들어라
random.normal(0, 1, (2, 3) ) : 평균이 0이고, 표준편차가1인 표준정규 분포 데이터 만들기
random.random(5): 0~1사이의 무작위 수 5개
linspace(0, 12, 4): 시작과 끝 값을 지정하고 그 사이의 값을 균등하게 배분한다.

numpy 데이터 변형

concatenate( ) : 배열 합치기 
   ex> np.concatenate([array1,array2])
split():배열 나누기 
   ex>left, right=np.split(array,[2],axis=1)
reshape( ): 배열의 형태 변경하기         ex>np.arange(8).reshape(2,4)

배열 슬라이싱

ex> 2차원 리스트에서 모든 원소의 두 번째 원소들만 출력
list1=[[1,10],[2,20],[3,30]]
nplist1=np.array(list1)
print(nplist1[ : ,1])
- 각각의 원소의 특정 인덱스 위치에 일괄적으로 접근 가능
먼저 리스트를 numpy 형식으로 변환 후 슬라이싱 해야 함
리스트의 인덱스는 반드시 정수나 슬라이스여야함

numpy 데이터 이용하기

mean( ) : 평균값 계산    ex> array1.mean()
모든 원소 개별확인    ex>array1 > 30
all(): 배열의 모든 원소가 조건을 만족하면 True 
     ex> np.all( array1 >= 30) 
any(): 배열에 조건을 만족하는 원소가 있으면 True
     ex> np.any( array1 > 30) 
sort(): 데이터 정렬   ex> array.sort()  , array.sort([::-1]) 
unique(): 중복제거 ex> np.unique(array)
각 선택요소를 True,False로 표현 ex>bool_indexing = (array % 2 == 0)

 

numpy는 가변 객체임으로 복사시 함수를 이용 해야한다. ex>     nplist2=nplist1 (얕은복사 수행) 
      nplist2=nplist1.copy() (깊은복사 수행)
불변(immutable)객체 : 할당된 값을 수정할 수 없다. int, float, bool, tuple, string, unicode
가변(mutable)객체 : 할당된 값을 수정할 수 있다. list, set, dict
깊은복사(deep copy): 원본의 내용을 실제로 복사한다. – 불변자료형 대입시
얕은복사(shallow copy):동일 값을 참조(reference)한다. – 가변자료형 대입시

 

실습

'python > BigdataAnalysis' 카테고리의 다른 글

로지스틱 회귀 분석  (0) 2022.09.27
텍스트 빈도 분석(영어)  (0) 2022.09.27
상관 분석+히트맵  (0) 2022.09.21
통계분석(기술통계분석+ 그래프)  (0) 2022.09.20
pandas  (0) 2022.09.19