코딩고치

[파이썬][데이터 사이언스 기초] numpy 본문

파이썬/데이터 사이언스 기초

[파이썬][데이터 사이언스 기초] numpy

코딩고치 2020. 5. 25. 23:22

numpy array

  • numpy의 모듈의 numpy 함수를 이용하여 numpy array 생성
import numpy
array1 = numpy.array([2, 3, 5, 7, 11, 13, 17, 19, 25, 29, 35])
array1
array([ 2,  3,  5,  7, 11, 13, 17, 19, 25, 29, 35])
type(array1)
numpy.ndarray
  • 요소 확인
array1.shape
(11,)
  • 2차원 배열
array2 = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8,], [9, 10, 11, 12]])
type(array2)
numpy.ndarray
array2
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
array2.shape
(3, 4)
  • ndarray: n차원 array를 의미
  • array1.shape의 (11,)는 1차원 배열에 요소가 11개
  • array2.shape의 (3, 4)는 2차원 ( 3 * 4) 배열을 의미
array1.size
11
array2.size
12

numpy array 생성 방법

  1. 파이썬 리스트
array1 = numpy.array([2, 3, 5, 7, 11, 13, 17, 19, 25, 29, 35])
print(array1)
[ 2  3  5  7 11 13 17 19 25 29 35]
  1. 같은 값으로 생성
    • numpy.full(개수, 값)
array2 = numpy.full(5, 3)
print(array2)
[3 3 3 3 3]
  1. 모든 값을 0으로 생성
    • numpy.full(개수, 0)
    • numpy.zeros(개수, dtype=int)
array3 = numpy.full(5, 0)
array4 = numpy.zeros(5, dtype=int)

print(array3)
print()
print(array4)
[0 0 0 0 0]

[0 0 0 0 0]
  1. 모든 값을 1로 생성
    • numpy.full(개수, 1)
    • numpy.ones(개수, dtype=int)
array5 = numpy.full(5, 1)
array6 = numpy.ones(5, dtype=int)

print(array5)
print()
print(array6)
[1 1 1 1 1]

[1 1 1 1 1]
  1. 랜덤값으로 생성
    • numpy.random.random(개수)
array7 = numpy.random.random(5)
array8 = numpy.random.random(6)

print(array7)
print()
print(array8)
[0.57043701 0.57889066 0.99636637 0.63634386 0.81984017]

[0.8931859  0.43020379 0.41245118 0.62497618 0.90985426 0.69009768]
  1. 연속된 값으로 생성
    • numpy.arange(n): 0부터 n-1까지 numpy array 생성
    • numpy.arange(n, m): n부터 m-1까지 numpy array 생성
    • numpy.arange(n, m, l): n부터 m-1까지 간격 l로 numpy array 생성
array9 = numpy.arange(5)
print(array9)
print()
array10 = numpy.arange(2, 5)
print(array10)
print()
array11 = numpy.arange(1, 10, 2)
print(array11)
[0 1 2 3 4]

[2 3 4]

[1 3 5 7 9]

alias

  • import numpy as np: numpy를 np로 간단하게 쓸 수 있음
import numpy as np
array12 = np.arange(5)
print(array12)
print()
array13 = np.arange(2, 5)
print(array13)
print()
array14 = np.arange(1, 10, 2)
print(array14)
[0 1 2 3 4]

[2 3 4]

[1 3 5 7 9]

인덱싱

  • 일반적인 list 인덱스와 같음
import numpy as np
array15 = np.array([2, 3, 4, 5, 6, 9, 11, 14, 15, 17])
array15[0]
2
array15[-1]
17
  • 리스트를 이용하여 여러개의 값 한번에 인덱싱 가능
array15[[1, 3, 4]]
array([3, 5, 6])
  • array를 이용하여 인덱싱 가능
array16 = np.array([1, 3, 5])
array15[array16]
array([3, 5, 9])
  • 인덱스 슬라이싱도 일반적인 리스트와 같음
array15[2:7]
array([ 4,  5,  6,  9, 11])
array15[:7]
array([ 2,  3,  4,  5,  6,  9, 11])
array15[2:]
array([ 4,  5,  6,  9, 11, 14, 15, 17])
array15[2:9:3]
array([ 4,  9, 15])

기본 연산

import numpy as np
array1 = np.arange(10)
array2 = np.arange(10, 20)
  • array * x, array / x, array + x, array - x, array ** x
    • 전체 원소에 해당 연산을 취함
array1 * 4
array([ 0,  4,  8, 12, 16, 20, 24, 28, 32, 36])
array1 / 3
array([0.        , 0.33333333, 0.66666667, 1.        , 1.33333333,
       1.66666667, 2.        , 2.33333333, 2.66666667, 3.        ])
array1 ** 2
array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81], dtype=int32)
array1 + 4
array([ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13])
array1 - 4
array([-4, -3, -2, -1,  0,  1,  2,  3,  4,  5])
  • array1 + array2: array1과 array2의 각각의 인덱스에 해당하는 값을 더함
array1 + array2
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
array1 * array2
array([  0,  11,  24,  39,  56,  75,  96, 119, 144, 171])
array1 - array2
array([-10, -10, -10, -10, -10, -10, -10, -10, -10, -10])

불린 연산

import numpy as np
array1 = np.array([1, 4, 6, 8, 9, 11, 15, 18, 20])
array1 > 10
array([False, False, False, False, False,  True,  True,  True,  True])
array1 % 2 == 0
array([False,  True,  True,  True, False, False, False,  True,  True])
bolleans = np.array([True, True, False, False, True, False, False, True, True])
# True만 담긴 index를 출력
np.where(bolleans)
(array([0, 1, 4, 7, 8], dtype=int64),)
np.where(array1 > 10)
(array([5, 6, 7, 8], dtype=int64),)
  • 데이터를 필터링할 때 유용하게 사용
filter = np.where(array1 > 10)
filter
(array([5, 6, 7, 8], dtype=int64),)
array1[filter]
array([11, 15, 18, 20])

통계

import numpy as np
array1 = np.array([52, 64, 21, 44, 94, 55, 34, 12])
# 최댓값
print(array1.max())

# 최솟값
print(array1.min())

# 평균
print(array1.mean())

# 중앙값
print(np.median(array1))

# 표준 편차
print(array1.std())

# 분산
print(array1.var())
94
12
47.0
48.0
24.150569351466643
583.25
Comments