Python Numpy 모듈
2023. 5. 29. 18:03ㆍ파이썬
1. 넘파이(Numpy)
- 수학 과학 계산용 package
- 파이썬 list보다 속도가 빠름
- ndarray를 사용한다 !
- 적은 메모리 사용
ndarray 과 list 차이
Python 리스트
- 여러가지 타입의 원소
- linked List 구현
- 메모리 용량이 크고 속도가 느림
- 벡터화 연산 불가
- NumPy ndarray
- 동일 타입의 원소
- contiguous memory layout
- 메모리 최적화, 계산 속도 향상
- 벡터화 연산 가능
출처 : https://datascienceschool.net/view-notebook/416d733c3a734565b69fd0c8dc959edb/
Tool : Google Colab
설치 방법 및 import 하기
! pip install numpy
import numpy as np
1차원 배열 만들기
ndarr1 =np.array([1,2,3,4])
print(ndarr1)
print(type(ndarr1)) #ndarray = n dimension array = n차원 배열
ndarray의 datatype
1가지 datatype만 저장이 가능
경우1. int + float
결과: 전체 float
## 3.14가 있지만 저장은 가능 (why? 전체를 다 float 형으로 바꿔서 저장 | 기준: 가장 큰 데이터 타입)
ndarr2 = np.array([1,2,3.14,4])
ndarr2 ## result : array([1. , 2. , 3.14, 4. ])
경우2. str + int + float + boolean
결과: 전체 str
# str을 넣을경우 : str으로 변경
ndarr4 = np.array(['1',2,3.14,True])
ndarr4
ndarray의 datatype 바꾸기
dtype=int 사용
# int로 바꾸기
ndarr3 = np.array([1,2,3.14,True],dtype=int)
ndarr3
예외
ndarr5 = np.array(['1','2','3.14','True'],dtype=int)
ndarr5
# invalid literal for int() with base 10: '3.14'
str에서 int변환중 float이 있기 때문이다.
ndarray의 슬라이싱
.shape 메소드 사용
# 1차원 배열
ndarr1 = np.array(['🟢','🔴','🟡','🍏','🍋'])
ndarr1.shape
# result: (5,) 5행 1열
# 2차원 배열
ndarr2d= np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
ndarr2d.shape
# result: (3,4) 3행 4열
1가지 행or 열 가져오기
# 한행을 가져오기
print(ndarr2d[0])
print(ndarr2d[0,])
print(ndarr2d[0,:])
#0열 가져오기
print(ndarr2d[:,0])
Fancy 인덱싱
범위가 아닌 특정 index의 집합의 값들을 선택해서 추출하고 싶을 때 사용
ndarr1= np.array([10,15,2,8,20,90,85,44,23,32])
idx = [2,5,9]
ndarr1[idx] # index 2번,5번,9번을 뽑아준다.
Boolean 인덱싱
조건에 대한 필터링을 통해 색인을 위해 사용
주의점: index 개수 맞아야한다.
ndarr1 = np.array(['🟢','🔴','🟡','🍏','🍋'])
selValue = [True,False,True,False,True]
ndarr1[selValue]
ERROR
ndarr1 = np.array(['🟢','🔴','🟡','🍏','🍋'])
selValue = [True,False,True]
ndarr1[selValue]
2차원 Boolean 인덱싱
# 2차원 Boolean 인덱싱
ndarr2d= np.array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
ndarr2d > 7
boolean 결과값을 그대로 조건에 적용
ndarr2d[ndarr2d>7]
arange(x,y)
순차적인 값을 생성할 때 사용(range(x,y)) 같은 기능
arr2 =np.arange(1,11)
arr2
sort() -오름차순 정렬 (내림차순 없다)
728x90
'파이썬' 카테고리의 다른 글
Python(Colab) 데이터프레임 인덱싱(loc,iloc,boolean) (0) | 2023.06.08 |
---|---|
Python Pandas 기초 (0) | 2023.06.08 |
Day14_MySQL_Python 로그인 프로그램 작성 (0) | 2023.03.22 |
Day14_MYSQL_Python 회원가입 프로그램을 만들어보자 (0) | 2023.03.22 |
Day14_MySQL _Python 데이터 삽입+삭제+수정+출력 (0) | 2023.03.22 |