● 인공지능, 분석/21.07 코드잇_DS과정

2-1. Numpy 이론 | 넘파이배열과 파이썬 리스트의 차이점, 평균▪중간값 등등

0ver-grow 2021. 5. 29. 10:56
반응형

크고 복잡한 데이터를 쉽게 계산하게 도와주는 넘파이. 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 배열
각 인덱스 호출하기

 

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])
반응형