Numpy: 파이썬에서 데이터 처리에 가장 기본이 되는 패키지
- 수치연산은 벡터연산으로 진행된다
- 벡터연산은 기본적으로 '기능 중심의 표현'이기 때문에 데이터 처리 및 표현이 간결해진다
+ 개별 원소를 신경쓰지 않아도 된다
- 수치연산을 위해 개발한 자료형이기 때문에 값들에 대한 통일성을 가지고 사용해야 한다
import numpy as np
a = [100, 200, 300, 400 ,500]
a의 모든 원소에 +10을 하고 싶다면?
1) 기본 파이썬
# 1. 일반 for문 사용
b = []
for i in a:
b.append(i + 10)
b
# [110, 210, 310, 410, 510]
# 2. list comprehension
[i + 10 for i in a]
# [110, 210, 310, 410, 510]
2) numpy의 array 사용
a_arr = np.array(a)
a_arr + 10
# array([110, 210, 310, 410, 510])
[array의 기본 연산]
x = [1,2,3,4,5]
y = [10,20,30,40,50]
x_arr, y_arr = np.array(x), np.array(y)
x_arr + y_arr
# array([11, 22, 33, 44, 55])
[array의 메서드들]
test_arr = np.array([1,2,3,4,5])
# 1) 이 array의 개별 값들의 자료형은?
test_arr.dtype
# dtype('int64')
# 2) 이 array의 차원에 대한 정보
test_arr.ndim
# 1
# 3) 이 array의 모양
test_arr.shape
# (5,) -> 1차원
[array의 인덱싱]
test_arr[0,1] # -> 리스트에서 불가한 형식
test_arr[0][1]
# 2
# 모두 동일한 결과가 나온다
# 인덱스 리스트업
test_arr[[0,1]]
# array([1, 2])
[인덱싱 예시]
m =[
[0,1,2,3,4,5],
[6,7,8,9,10,11],
[12,13,14,15,16,17],
[18,19,20,21,22,23],
[24,25,26,27,28,29],
[30,31,32,33,34,35]
]
# 빨강
m[:,2]
# 주황
m[0][3:5]
# 초록
m[[2,4],::2]]
# 파랑
m[4:,4:]
++ 불리언 인덱싱: 인덱싱 자리에 필터링하고자 하는 조건식 작성
test_arr = np.arange(10)
test_arr
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 5보다 작은 값 추리기
test_arr[test_arr < 5]
# array([0, 1, 2, 3, 4])
[numpy가 자체적으로 만든 자료타입]
ref) https://numpy.org/doc/stable/reference/arrays.dtypes.html
Data type objects (dtype) — NumPy v2.1 Manual
Data type objects (dtype) A data type object (an instance of numpy.dtype class) describes how the bytes in the fixed-size block of memory corresponding to an array item should be interpreted. It describes the following aspects of the data: Type of the data
numpy.org
# 스트링으로 형변환하여 array를 만드는 방법
b = [1,2,3]
b_arr = np.array(b, dtype = np.string_)
b_arr
# array([b'1', b'2', b'3'], dtype='|S1')
# 만들어진 array를 변경할 경우 강제 형변환 필요
b_arr.astype(np.float64) # 재할당 필요
# array([1., 2., 3.])
++ numpy에서 추천하는 수식함수의 형태
test_arr.sum()
# 45
# 가능은 하나 속도가 느려질 수 있음
sum(test_arr)
# 45
'ASAC 6기 > 데이터 분석' 카테고리의 다른 글
[데이터 기초] Pandas 2 (0) | 2024.08.30 |
---|---|
[데이터 기초] Pandas 1 (0) | 2024.08.28 |