IT's 2 EG

numpy 사용법 기초 본문

Data Scientist/Python 라이브러리 기초 사용법

numpy 사용법 기초

엠씨비기 2021. 4. 30. 00:36
CH 01. 파이썬 기초 - Numpy 라이브러리

Numpy 라이브러리

Numpy란?

  • 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬 라이브러리
  • NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공
In [1]:
# Numpy 라이브러리 불러오기
import numpy as np

array 생성

In [2]:
arr1 = np.array([1,2,3])
arr1
Out[2]:
array([1, 2, 3])
In [3]:
arr2 = np.array([4,5,6])
arr2
Out[3]:
array([4, 5, 6])

array 연산

In [4]:
arr1 + arr2 # 합
Out[4]:
array([5, 7, 9])
In [5]:
arr1 - arr2 # 차
Out[5]:
array([-3, -3, -3])
In [6]:
arr1 * arr2 #곱(각 원소의 곱을 표시)
Out[6]:
array([ 4, 10, 18])
In [7]:
arr1 / arr2
Out[7]:
array([0.25, 0.4 , 0.5 ])

array 붙이기

In [8]:
# array 좌우로 붙이기
arr3 = np.r_[arr1, arr2]
arr3 = np.hstack([arr1, arr2])
arr3 = np.concatenate((arr1, arr2))
arr3
Out[8]:
array([1, 2, 3, 4, 5, 6])
In [9]:
# array 위아래로 붙이기
arr4 = np.r_[[arr1],[arr2]]
arr4 = np.vstack([arr1, arr2])
arr4
Out[9]:
array([[1, 2, 3],
       [4, 5, 6]])

arr 구조 확인

In [10]:
# 배열의 구조 확인
print(arr3.shape)
print(arr4.shape)
(6,)
(2, 3)
In [11]:
# 배열의 데이터타입 확인
print(arr3.dtype)
int32

기타 배열 정의 함수

In [12]:
# 원소가 0으로 이루어진 배열 생성
print(np.zeros(10))
print(np.zeros([3,2]))
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0.]
 [0. 0.]
 [0. 0.]]
In [13]:
# 원소가 1로 이루어진 배열 생성
print(np.ones(10))
print(np.ones([2,3]))
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[[1. 1. 1.]
 [1. 1. 1.]]
In [14]:
# 원소가 순차적인 값을 가진 배열 구성
print(np.arange(10)) # 0이상 10미만의 원소들의 배열
print(np.arange(3,10)) # 3이상 10미만의 원소들의 배열
print(np.arange(3, 10, 2)) #3부터 10미만의 2씩 간격을 가진 배열
[0 1 2 3 4 5 6 7 8 9]
[3 4 5 6 7 8 9]
[3 5 7 9]
In [15]:
# 대값이 0이고, 표준편차가 1인 가우시안 정규 분포를 따르는 난수를 발생시키는 함수
np.random.randn(3, 3)
Out[15]:
array([[-1.28984225,  0.16977385, -0.02666922],
       [-0.46204264, -0.64576172, -0.86695303],
       [ 0.62437068, -0.9735316 ,  0.24632308]])

Array 인덱싱

In [16]:
# 1차원 array 인덱싱
print(arr3)
print(arr3[3]) # arr3의 4번째 원소
print(arr3[3:]) # arr3의 4번 이상의 원소
print(arr3[:3]) # arr3의 4번 전까지의 원소
[1 2 3 4 5 6]
4
[4 5 6]
[1 2 3]
In [17]:
# 2차원 array 인덱싱
print(arr4)
print(arr4[0,0]) # arr4의 1행 1열의 원소
print(arr4[1,2]) # arr4의 2행 3열의 원소
print(arr4[:, :2]) # arr4의 모든행 2열까지 원소
[[1 2 3]
 [4 5 6]]
1
6
[[1 2]
 [4 5]]

numpy 함수

In [18]:
arr = np.array([[-1,2,3], [4,-5,6], [7,8,-9]])
arr
Out[18]:
array([[-1,  2,  3],
       [ 4, -5,  6],
       [ 7,  8, -9]])
In [19]:
# 절댓값
np.abs(arr)
Out[19]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
In [20]:
# 제곱근
np.sqrt(abs(arr))
Out[20]:
array([[1.        , 1.41421356, 1.73205081],
       [2.        , 2.23606798, 2.44948974],
       [2.64575131, 2.82842712, 3.        ]])
In [21]:
# 제곱
np.square(arr)
Out[21]:
array([[ 1,  4,  9],
       [16, 25, 36],
       [49, 64, 81]], dtype=int32)
In [22]:
# 로그
np.log10(abs(arr))
Out[22]:
array([[0.        , 0.30103   , 0.47712125],
       [0.60205999, 0.69897   , 0.77815125],
       [0.84509804, 0.90308999, 0.95424251]])
In [23]:
# 부호 (-1은 음수, 1은 양수)
np.sign(arr)
Out[23]:
array([[-1,  1,  1],
       [ 1, -1,  1],
       [ 1,  1, -1]])
In [24]:
# 소수접 첫째 자리에서 올림
arr5 = np.random.randn(3,3)
print(arr5)
print(np.ceil(arr5))
[[ 1.15486535  1.48989083  0.33751309]
 [-0.78347652  0.33893136  0.03396268]
 [-0.14524863  1.00553576 -0.45289409]]
[[ 2.  2.  1.]
 [-0.  1.  1.]
 [-0.  2. -0.]]
In [25]:
# 원소가 NaN인것을 확인 (NaN 이면 True, 아니면 False)
np.isnan(np.log(arr))
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in log
  
Out[25]:
array([[ True, False, False],
       [False,  True, False],
       [False, False,  True]])
In [26]:
# 합
print(arr)
print(np.sum(arr)) # 모든 원소의 합
print(np.sum(arr, axis=0)) # 각 열의 원소들의 합
print(np.sum(arr, axis=1)) # 각 행의 원소들의 합
[[-1  2  3]
 [ 4 -5  6]
 [ 7  8 -9]]
15
[10  5  0]
[4 5 6]
In [27]:
# 통계
print(np.mean(arr)) # 평균
print(np.var(arr)) # 분산
print(np.std(arr)) # 표준편차
print(np.max(arr)) # 최대값
print(np.min(arr)) # 최소값
1.6666666666666667
28.88888888888889
5.374838498865699
8
-9

'Data Scientist > Python 라이브러리 기초 사용법' 카테고리의 다른 글

유용한 라이브러리  (0) 2021.07.13
Comments