[데이터분석] 넘파이 (Numpy)
2023. 6. 12. 21:24ㆍ데이터 분석
728x90
넘파이란?
* 수학, 과학 계산용 패키지
*자료구조(ndarray)를 제공 ▶파이썬의 list보다 속도가 빠름, 적은 메모리를 사용
#넘파일 다운로드
!pip install numpy
# 넘파이 가져오기
import numpy
#확인하기
numpy
▶ <module 'numpy' from '/usr/local/lib/python3.10/dist-packages/numpy/__init__.py'>
#파이썬에서 numpy를 가져오기
import numpy as np
1️⃣ ndarray
→ NumPy에서 제공하는 다차원 배열 객체 → 다차원의 데이터를 효율적으로 저장하고 다양한 수치 연산을 수행하는 데 사용됨
list1 = [1,2,3,4]
list2 = [[1,2,3,4],[5,6,7,8]]
print(list1)
print(list2)
print(type(list1))
print(type(list1[1]))
print(type(list2))
---------------------------------------
# 결과
[1, 2, 3, 4]
[[1, 2, 3, 4], [5, 6, 7, 8]]
<class 'list'>
<class 'int'>
<class 'list'>
ndarr1 = np.array([1,2,3,4])
print(ndarr1)
print(type(ndarr1)) # ndarray = n dimension array
--------------------------------------------------
# 결과
[1 2 3 4]
<class 'numpy.ndarray'>
# 리스트를 ndarray로 변환하는 방법
ndarr1 = np.array(list1)
ndarr2 = np.array(list2)
print(ndarr1)
print(ndarr2)
print(type(ndarr1))
print(type(ndarr2))
----------------------------------
# 결과
[1 2 3 4]
[[1 2 3 4]
[5 6 7 8]]
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
2️⃣ ndarray의 data type
→ ndarray는 list와 다르게 1개으 단일 데이터 타입만 허용
list1 =[1,3.14, 'Python', '😎',True]
-------------------------------------
list1 =[1,3.14, 'Python', '😎',True]
list1[3]
-------------------------------------
# 결과
▶ [1, 3.14, 'Python', '😎', True]
▶ 😎
ndarr1 = np.array([1,2,3,4])
ndarr2 = np.array([1,2,3.14,4]) # 모든 요소가 float로 변경됨
ndarr3 = np.array([1,2,3.14,True])
ndarr4 = np.array(['1',2,3.14,True])
ndarr4 = np.array(['1',2,3.14,True],dtype= int)
-----------------------------
ndarr1
ndarr2
ndarr3 = np.array([1,2,3.14,True],dtype = int)
ndarr3
ndarr4 # dtype='<U32 유니코드 데이터 타입
type(ndarr4)
ndarr4 # np.array(['1','2','3.14','True'],dtype= int)일경우 오류가 뜸 3.14가 문제기이기 때문에
-----------------------------
# 결과
▶ array([1, 2, 3, 4])
▶ array([1. , 2. , 3.14, 4. ])
▶ array([1, 2, 3, 1])
▶ array(['1', '2', '3.14', 'True'], dtype='<U32')
▶ numpy.ndarray
▶ array([1, 2, 3, 1])
3️⃣ ndarray 슬라이싱
ndarr1 = np.array(['🍊','🍉','🥭','🍎','🍇'])
ndarr1
ndarr1.shape
-------------------------------------------------
# 결과
▶ array(['🍊', '🍉', '🥭', '🍎', '🍇'], dtype='<U1')
▶ (5,)
➡️ 인덱싱
print(ndarr1[0])
print(ndarr1[4])
print(ndarr1[-1])
print(ndarr1[-2])
-------------------
# 결과
🍊
🍇
🍇
🍎
➡️ 슬라이싱
print(ndarr1[0:3])
print(ndarr1[2:])
print(ndarr1[:3])
-------------------
# 결과
['🍊' '🍉' '🥭']
['🥭' '🍎' '🍇']
['🍊' '🍉' '🥭']
ndarr2d = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
ndarr2d.shape
print(ndarr2d[0,2])
print(ndarr2d[0][2])
# 0행 가져오기
print(ndarr2d[0])
print(ndarr2d[0,])
print(ndarr2d[0,:])
#0열 가져오기
print(ndarr2d[:,0])
-------------------------------------------------------
# 결과
▶ (3, 4)
▶ 3
▶ 3
▶ [1 2 3 4]
▶ [1 2 3 4]
▶ [1 2 3 4]
▶ [1 5 9]
4️⃣ Fancy 인덱싱
* 범위가 아닌 특정 index의 집합의 값들을 선택해서 추출하고 싶을 때 사용
# 보기
ndarr1 = np.array([10,15,2,8,20,90,85,44,23,32])
idx = [2,5,9]
ndarr2d = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
-------------------------------------------------------
ndarr1[idx]
ndarr2d[[0,1],:]
--------------------------------------------------------
# 결과
▶ array([ 2, 90, 32])
▶ array([[1, 2, 3, 4],
[5, 6, 7, 8]])
5️⃣ Boolean 인덱싱
* 조건에 대한 필터링을 통해 Boolean값을 이용한 색인을 사용
# 보기
ndarr1 = np.array(['🍊','🍉','🥭','🍎','🍇'])
selValue = [True,False,True,True,False]
ndarr2d = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
-----------------------------------------------------------
ndarr1[selValue] # 숫자 안맞으면 에러뜸
ndarr2d>7
ndarr2d[ndarr2d>7]
------------------------------------------------------------
# 결과
▶ array(['🍊', '🥭', '🍎'], dtype='<U1')
▶ array([[False, False, False, False],
[False, False, False, True],
[ True, True, True, True]])
▶ array([ 8, 9, 10, 11, 12])
728x90
반응형
'데이터 분석' 카테고리의 다른 글
[데이터 분석] CSV 파일 다루기/ 데이터 프레임 기본 정보 알아보기 (0) | 2023.06.25 |
---|---|
[ 데이터 분석 ] 판다스 (Pandas) (4) | 2023.06.13 |
[데이터 분석] 연산자 (0) | 2023.06.13 |