반응형
크고 복잡한 데이터를 쉽게 계산하게 도와주는 넘파이. numerical python
수치계산을 돕는 파이썬 도구
넘파이가 중요한 이유?
넘파이 배열 ( numpy array) = 파이썬 리스트와 비슷함
일반적인 파이썬 리스트로 배열을 작성하면 코드가 길고 연산 시간이 오래 걸림
numpy array와 python list의 차이점
문법 차이
간단한 문법과 뛰어난 성능
numpy array | python list | |
덧셈, 곱셈 | 동일한 배열 2가지를 덧셈 연산하면? [10,5,3] + [10,5,3] = [20,10,6] 배열 전체에 곱셉 계산하면? [1,2,3] * 2 = [2,4,6] |
동일한 배열 2가지를 덧셈 연산하면? [10,5,3] + [10,5,3] = [10,5,3,10,5,3] 배열 전체에 곱셈 연산하면? [1,2,3] * 2 = [1,2,3,1,2,3] |
연산 | -, *, / 연산 ⭕ | -, *, / 연산 ❌ |
배열 전체에 덧셈하면? [1,2,3] + 5 = [6,7,8] |
리스트 전체에 덧셈하면? [1,2,3] + 5 = 오류발생 (뺼셈, 나눗셈도 불가) |
|
리스트, 배열별 자료형 | 한 배열당 한가지 타입 | 다양한 타입 가능 |
언제 쓰는게 유리한가 | 복잡한 수치계산 다차원 배열(행렬) 계산 |
값 추가 및 제거 |
성능의 차이가 발생하는 이유?
파이썬 리스트는 다양한 자료형이 들어감
넘파이 어레이는 한가지 자료형만 들어가기 때문.
파이썬 리스트를 사용하기 좋은 경우
값을 추가하고 제거하
넘파이는 행렬, 2차원 배열에서 큰 힘을 발휘함
- numpy 모듈의 array 메소드에 파라미터로 파이썬 리스트를 넘겨주면 numpy array가 리턴
- numpy 모듈의 full 메소드를 사용하면, 모든 값이 같은 numpy array를 생성 : numpy.full(6, 0) # [0 0 0 0 0 0]
- 모든 값이 0인 numpy array 생성 : numpy.zeros(6, dtype=int) # [0 0 0 0 0 0]
- 모든 값이 1인 numpy array 생성 : numpy.ones(6, dtype=int) # [1 1 1 1 1 1]
- 임의의 값들로 배열을 생성 : numpy.random.random(6) # [0.42214929 0.45275673 0.57978413 0.61417065 0.39448558 0.03347601]
- 연속된 값들이 담긴 numpy array 생성 : numpy.arange(6) # [0 1 2 3 4 5]
- 파라미터 2개, arange(n, m)을 하면 : n부터 m-1까지의 값들이 담긴 numpy array가 리턴
- array1 = numpy.arange(2, 7) # [2 3 4 5 6]
- 파라미터 3개, arange(n, m, s)를 하면 : n부터 m-1까지의 값들 중 간격이 s인 값들이 담긴 numpy array가 리턴
- array1 = numpy.arange(3, 17, 3) # [ 3 6 9 12 15]
numpy 인덱싱, 슬라이싱
numpy 라이브러리는 기본적인 통계 기능
최댓값, 최솟값
max 메소드와 min 메소드를 사용하면 numpy array의 최댓값과 최솟값을 구할 수 있습니다.
import numpy as np
array1 = np.array([14, 6, 13, 21, 23, 31, 9, 5])
print(array1.max()) # 최댓값
print(array1.min()) # 최솟값
###
31
5
###
평균값
mean 메소드를 사용하면 numpy array의 평균값을 구할 수 있습니다.
import numpy as np
array1 = np.array([14, 6, 13, 21, 23, 31, 9, 5])
print(array1.mean()) # 평균값
###
15.25
###
중앙값
median 메소드를 사용하면 중간값을 구할 수 있는데요. 특이하게 median은 numpy array의 메소드가 아니라 numpy의 메소드입니다.
import numpy as np
array1 = np.array([8, 12, 9, 15, 16])
array2 = np.array([14, 6, 13, 21, 23, 31, 9, 5])
print(np.median(array1)) # 중앙값
print(np.median(array2)) # 중앙값
###
12.0
13.5
array1을 정렬하면 중앙값이 1212입니다.
array2에는 짝수개의 요소가 있기 때문에 중앙값이 1313과 1414 두 개입니다. 둘의 평균값을 내면 13.513.5입니다.
###
표준 편차, 분산
표준 편차와 분산은 값들이 평균에서 얼마나 떨어져 있는지 나타내는 지표입니다. 잘 모르신다면 일단 넘어가셔도 좋습니다.
import numpy as np
array1 = np.array([14, 6, 13, 21, 23, 31, 9, 5])
print(array1.std()) # 표준 편차
print(array1.var()) # 분산
###
8.496322733983215
72.1875
###
numpy 불린 연산
np.where(리스트 > 조건) : 조건에 맞는 것만 나타남
Numpy 기초. 1차원과 2차원. 자료형, 차원, 모양, 크기, dtype 등등
import numpy as np
print("1차원 array")
array = np.array(range(10))
print(array)
# 1. array의 자료형을 출력해보세요.
print(type(array))
# 2. array의 차원을 출력해보세요.
print(array.ndim)
# 3. array의 모양을 출력해보세요.
print(array.shape)
# 4. array의 크기를 출력해보세요.
print(array.size)
# 5. array의 dtype(data type)을 출력해보세요.
print(array.dtype)
# 6. array의 인덱스 5의 요소를 출력해보세요.
print(array[5])
# 7. array의 인덱스 3의 요소부터 인덱스 5 요소까지 출력해보세요.
print(array[3:6])
import numpy as np
print("2차원 array")
#1부터 15까지 들어있는 (3,5)짜리 배열을 만듭니다.
matrix = np.array(range(1,16))
matrix.shape = 3,5
print(matrix)
# 1. matrix의 자료형을 출력해보세요.
print(type(matrix))
# 2. matrix의 차원을 출력해보세요.
print(matrix.ndim)
# 3. matrix의 모양을 출력해보세요.
print(matrix.shape)
# 4. matrix의 크기를 출력해보세요.
print(matrix.size)
# 5. matrix의 dtype(data type)을 출력해보세요.
print(matrix.dtype)
# 6. matrix의 dtype을 str로 변경하여 출력해보세요.
print(matrix.astype('str'))
# 7. matrix의 (2,3) 인덱스의 요소를 출력해보세요.
print(matrix[2,3])
# 8. matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력해보세요.
print(matrix[:2,1:4])
반응형
'● 인공지능, 분석 > 21.07 코드잇_DS과정' 카테고리의 다른 글
3-4. DataFrame 실전 | DataFrame으로 파일 출력하기 (0) | 2021.09.10 |
---|---|
3-3. DataFrame 이론 | pandas의 데이터 타입 (0) | 2021.09.09 |
3-2. DataFrame 실전 | 리스트로 되어 있는 이름, 생일, 직업을 df로 변환하기 (0) | 2021.05.31 |
3-1. DataFrame 이론 | Numpy와 Pandas DF의 차이점. DF 만들기 (31) | 2021.05.29 |
2-2. Numpy 실전 | numpy array에 곱셉연산. Boolean연산 (0) | 2021.05.29 |