python library

numpy 기초(1차원 배열)

나른한 찰리 2021. 10. 28. 00:35
반응형

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())         # 분산
반응형