반응형
pyCharm에서 numpy 라이브러리를 설치한 뒤 import하여 실행한다.
▷ numpy 기초
type, shape, size
import numpy
array1 = numpy.array([2, 3, 4, 5, 7, 11, 13, 15])
print(array1)
print(type(array1)) # 출력결과 : numpy.ndarray -> n-dimensional array
print(array1.shape) # 모양(shape)을 알려줌
print(array1.size) # 요소의 갯수
array2 = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(array2)
print(type(array2))
print(array2.shape)
print(array2.size)
▷ numpy array를 만드는 다양한 방법
array, full, zeros, ones, random.random, arange
import numpy
# 1. 파이썬 리스트를 통해 생성
# numpy 모듈의 array 메소드에 파라미터로 파이썬 리스트를 넘겨주면 numpy array가 리턴된다.
array1 = numpy.array([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31])
print(array1)
print() # 행 구분을 위하여
# 2. 균일한 값으로 생성
# numpy 모듈의 full 메소드를 사용하면, 모든 값이 같은 numpy array를 생성할 수 있다.
array2 = numpy.full(6, 7)
print(array2)
# 2-1. 모든 값이 0인 numpy array 생성
# 모든 값이 0인 numpy array를 생성하기 위해서는 full 메소드를 사용하면 된다.. 하지만 사실은 더 간단한 방법이 있다.
array2_1 = numpy.full(7, 0)
array2_2 = numpy.zeros(6, dtype=int)
print(array2_1)
print(array2_2)
# 2-2. 모든 값이 1인 numpy array 생성
# 모든 값이 1인 numpy array는 zeros 메소드 대신 ones를 사용하면 된다.
array2_3 = numpy.full(7, 1)
array2_4 = numpy.ones(7, dtype=int)
print(array2_3)
print(array2_4)
print()
# 3.랜덤한 값들로 생성
# 임의의 값들로 배열을 생성할 때, numpy의 random 모듈의 random 함수를 사용한다.
# numpy 모듈 안에 random이라는 모듈이 있고, 그 안에 또 random이라는 함수가 있는 것이다.
array3_1 = numpy.random.random(6)
array3_2 = numpy.random.random(6)
print(array3_1)
print(array3_2)
print()
# 4. 연속된 값들이 담긴 numpy array 생성
# numpy 모듈의 arange 함수를 사용하면 연속된 값들이 담겨 있는 numpy array를 생성가능하다.
# arange 함수는 파이썬의 기본 함수인 range와 굉장히 비슷한 원리로 동작한다.
# 4-1. 파라미터 1개
# arange(m)을 하면 0부터 m-1까지의 값들이 담긴 numpy array가 리턴됨.
array4_1 = numpy.arange(7)
print(array4_1)
# 4-2. 파라미터 2개
# arange(n, m)을 하면 n부터 m-1까지의 값들이 담긴 numpy array가 리턴됨.
array4_2 = numpy.arange(2, 9)
print(array4_2)
# 4-3. 파라미터 3개
# arange(n, m, s)를 하면 n부터 m-1까지의 값들 중 간격이 s인 값들이 담긴 numpy array가 리턴됨.
array4_3 = numpy.arange(10, 20, 2)
print(array4_3)
▷ 주로 numpy 풀 네임을 사용하지 않고 np로 줄여서 사용한다. (alias)
import numpy as np
▷ indexing, slicing
import numpy as np
array1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
# 1. indexing
print(array1[0])
print(array1[3])
print(array1[-1])
print()
print(array1[[1, 3, 4]])
array2 = np.array([2, 1, 3])
print(array2)
print()
# 2. slicing
print(array1[2:7]) # 2번부터 6번까지
print(array1[:7])
print(array1[2:])
print(array1[1:8:2])
▷ 기본 연산 (+, -, /, *, **)
- numpy 기본 연산을 사용하면 파이썬에서 for문 등 반복문을 통해 일일히 계산해야 하는 과정을 확 줄일 수 있다.
import numpy as np
array1 = np.arange(10)
array2 = np.arange(10, 20)
print(array1 * 2) # 모든 값에 2를 곱한다.
print(array1 / 2)
print(array1 + 2)
print(array1 ** 2)
print(array1 + array2)
print(array1 * array2)
print(array1 / array2)
▷ 기본 연산 예제
# 예제
# 1엔은 10.01원, 1달러는 1120원이라 가정
# Q. 두 지점의 매출의 합이 원화로 담긴 numpy array를 만들어 출력하시오
# 일본 지점
revenue_in_yen = [
3000, 3400, 3200, 3600,
4400, 1400, 1800
]
# 미국 지점
revenue_in_dollar = [
120, 160, 140, 190,
210, 140, 100,
]
# A
import numpy as np
array_yen = np.array(revenue_in_yen)
array_dollar = np.array(revenue_in_dollar)
array_won = array_yen * 10.01 + array_dollar * 1120
print(array_won)
▷ boolean operation
비교 연산, where
import numpy as np
array1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
print(array1 > 4) # 4보다 큰 숫자가 있는 자리에는 True, 아닌 경우 False
print(array1 % 2 == 1)
boolean_array = np.array([True, True, False, False, True, False])
print(np.where(boolean_array)) # True 가 담긴 인덱스만 골라낸다.
# 필터링
num_big_4 = np.where(array1 > 4)
print(array1[num_big_4])
▷ Compare 'numpy array' versus 'python list'
numpy array | python list | |
공통점 | - 여러 값을 보관한다. | |
차이점 | 1. [1, 3, 5, 7] + [1, 3, 5, 7] = [2, 6, 10, 14] 2. 뺄셈, 곱셉, 나눗셈의 경우 덧셈과 비슷하게 동작함 3. [1, 3, 5, 7] + 5 = [6, 8, 10, 12] 4. [1, 3, 5, 7] * 2 = [2, 6, 10, 14] 5. 문법이 간단 + 뛰어난 성능 6. 한 numpy array는 같은 자료형의 값만 들어갈 수 있다. |
1. [1, 3, 5, 7] + [1, 3, 5, 7] = [1, 3, 5, 7, 1, 3, 5, 7] 2. 뺄셈, 곱셉, 나눗셈의 경우 오류 발생 3. [1, 3, 5, 7] + 5 = error 4. [1, 3, 5, 7] * 2 = [1, 3, 5, 7, 1, 3, 5, 7] 5. - 6. 파이썬 리스트에는 다양한 자료형들을 한번에 넣을 수 있다. |
▷ 기본적인 통계 기능
import numpy as np
array1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
print(array1.max())
print(array1.min())
print(array1.mean())
print(np.median(array1)) # 중앙값 계산. median은 numpy array의 메소드가 아니라 numpy의 메소드이다.
print(array1.std()) # 표준편차
print(array1.var()) # 분산
반응형
'python library' 카테고리의 다른 글
Pandas (0) | 2021.11.19 |
---|---|
Jupyter Notebook 기본 (0) | 2021.11.18 |
기본 지도 학습 알고리즘 : 선형 회귀(Linear Regression) (0) | 2021.11.04 |
numpy : A matrix Library in python (2차원 배열) (0) | 2021.10.28 |