Python/numpy & Pytorch

[Numpy] 데이터 생성

파송송 2022. 7. 30. 17:01
728x90

https://numpy.org/doc/stable/reference/routines.array-creation.html

 

Array creation routines — NumPy v1.23 Manual

Note numpy.rec is the preferred alias for numpy.core.records.

numpy.org


Numpy

  • 과학 계산을 위한 연산 라이브러리
  • 행렬 / 배열 처리를 위한 연산할 때 사용

사용 이유

  • Python의 list 보다 Numpy의 ndarray가 빠름
    • ndarray는 c언어로 구현, 연속된 메모리에 생성됨
    • 전체 데이터를 한번에 계산함 (Vectorization)
  • Python의 list 보다 적은 메모리를 사용함
  • 선형 대수, 통계 관련 여러 함수를 내장하고 있음

Numpy 모듈 불러오기 & ndarray 생성

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3])
y = np.array([1, 2, 3])

plt.plot(x, y)

 


 

type 체크시 numpy.ndarray로 나오는 것을 확인 할 수 있음

x = np.array([[1, 2, 3], [4, 5, 6]])

print(y)
print(type(x))

Output

[[1 2 3]
 [4 5 6]]
<class 'numpy.ndarray'>

특수한 배열 생성

np.arange -> Python의 range와 비슷함

np.arange(10)
np.arange(1,10)
np.arange()
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
array([1, 3, 5, 7, 9])

 

np.ones, np.zeros

np.zeros는 배열값이 1이 아니라 0이 들어감

np.ones((2, 3))
np.ones((2, 3, 4))
np.ones((2, 3, 4, 5))
array([[1., 1., 1.],
       [1., 1., 1.]])
array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])
array([[[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]],


       [[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]]])

 

np.empty

항목을  초기화 하지 않고 새 배열을 반환함

np.empty((5, 5))
array([[1.31775939e-311, 1.31864561e-311, 1.31775939e-311,
        1.31864561e-311, 1.31775939e-311],
       [1.31864561e-311, 1.31775939e-311, 1.31864561e-311,
        6.91691904e-323, 1.31864561e-311],
       [1.31775939e-311, 1.31864561e-311, 1.31775939e-311,
        1.31864561e-311, 5.44460342e-321],
       [1.31864561e-311, 6.91691904e-323, 1.31864561e-311,
        1.31775939e-311, 1.31862594e-311],
       [2.75859453e-313, 5.30498948e-313, 8.48798316e-314,
        1.27319747e-313, 1.31775939e-311]])

 

np.full

np.full((2, 3, 4), 5)
array([[[5, 5, 5, 5],
        [5, 5, 5, 5],
        [5, 5, 5, 5]],

       [[5, 5, 5, 5],
        [5, 5, 5, 5],
        [5, 5, 5, 5]]])

 

np.eye 

단위 행렬 (대각선만 1인 행렬)

np.eye(5)
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

 

np. linspace

  • 균일한 간격의 숫자를 반환함
  • 1부터 10까지 균일한 간격으로 3등분
  • 나눠진 숫자들의 차가 같아야 함
    • 5.5 - 1 = 4.5 , 10 - 5.5 = 4.5
np.linspace(1, 10, 3)
array([ 1. ,  5.5, 10. ])

 

reshape

생성된 배열의 구조를 바꿀 때 사용

x = np.arange(16)
x.reshape(4, 4)
 
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
728x90