Record
[Python] Numpy 알고 쓰자(1) 본문
* 해당글은 공학자를 위한 Python(조정래, https://wikidocs.net/book/1704)를 참고해 공부하며 올린 글입니다.
Python 언어를 사용한지 4년이 다 되어간다.
물론 Python을 사용해 머신러닝을 많이 하지 Python 언어 자체를 탐구하지는 않는다, ( 언어 자체는 굉장히 습득하기 쉬운 편)
하지만 데이터분석과 머신러닝에서 사용하는 패키지인 Numpy자체도 제대로 사용 못하고 있다는 생각이 들었다.
최근 GPT덕분에 나 자신이 Numpy로 데이터 조작하는 일이 거의 없기 때문이다.
그럼에도 불구하고 Numpy를 정리하려는 이유는 알고쓰는 것과 모르고 쓰는 것에는 능률차이가 굉장히 크다고 생각하기 때문!
따라서 Numpy에 대해 정리하고 포스팅 해보자 한다.

NumPy is the fundamental package for scientific computing in Python. It is a Python library that provides a multidimensional array object, various derived objects (such as masked arrays and matrices), and an assortment of routines for fast operations on arrays, including mathematical, logical, shape manipulation, sorting, selecting, I/O, discrete Fourier transforms, basic linear algebra, basic statistical operations, random simulation and much more
[출처 : https://numpy.org/doc/stable/ ]
적당히 해석하자면 다차원 배열을 쉽게 효율적으로 사용할 수 있게 해주는 패키지라는 뜻이다.
그렇다면 다차원 배열은 무엇일까?
그러한 개념을 알기 위해서는 첫번째로 배열을 알 필요가 있다.

배열의 경우는 컴퓨터 자원으로 효율적으로 사용할 수 있기 위해 사용하는 자료구조인데, 단순하게 생각하면
각 요소들을 넣는 장바구니 개념이다. 각 장바구니에는 index라하는 라벨이 있다. 순서대로 0번부터 n-1번까지 index가 생성된다.
만약에 array를 생성한 객체가 있다면 array[0]으로 0번의 array에 접근할 수 있다.
필자또한 여기 까지는 항상 쉽게 이해하는데, 다차원 배열로 가면 머리가 아파진다.

아래의 다차원 배열의 경우 3x4의 형태이다. 만약 빨간색 array에 접근하고 싶으면 array[0][0], 노란색에 접근하고 싶으면
array[1][0]으로 접근하면 된다.

이렇게 보면 굉장히 합리적이고 쉬운데 왜 필자는 어렵다고 생각할까? (쓰다보니 본인도 왜 어렵다 느꼈는지 모르겠음;;)
array의 배열 선언과 자주쓰는 함수를 정리하고자 한다.
1. array의 선언
import numpy as np
x = np.array([0.1,0.2,0.3])
y = np.array([[1,2,3],[4,5,6]])
x.shape
y.shape

첫 번째의 경우 1차원 배열로 1x3 의 경우 (3, )로 shape이 나오고 2x3배열로 (2행 3열) (2, 3) 배열의 shape이 나온다.
실제로 내가 데이터를 생성해서 사용하지 않고 데이터를 받아와서 사용하기 때문에 사실 선언은 자주 사용하지는 않는다.
x = np.zeros((3,4))
y = np.ones((3,4),dtype='int32')
z = np.empty((3,4))

하지만 np.zeors , np.ones는 가끔가다 사용한다. 뒤에 (m , n )의 shape을 넣어주면 해당 shape에 맞게 선언해준다.
x = np.random.randint(1,20)
y = np.random.randint([1,10])
z = np.random.randint([[1,20],[1,2]])

자매품으로 np.random.randint도 있다. 함수 선언부에 (n, m)을 적으면 n~m까지의 수를 random하게 선언해준다.
x = np.arange(3)
y = np.arange(1,3)
z = np.arange(1,10,2)

arange( from , to , step)을 통해 선언도 가능하다.
2. 데이터 Shape 변경
x = np.arange(9)
y = x.reshape(3,3)
z = x.reshape(3,-1)

reshape의 경우 ndarray를 고정된 크기를 유지하면서 shape를 바꿀 수 있다.
또한 reshape(-1)의 경우 데이터의 크기를 원하는 크기에 맞게? 바꿔준다.
x= [1,2,3,4,5,6]
y = np.array(x)
z = y.tolist()

list를 np,array를 통해 ndarray로 만들 수 있다. tolist()를 통해 ndarray를 list로 변경이 가능
'DataHandling > Python' 카테고리의 다른 글
| [Python] Numpy 알고 쓰자(2) (0) | 2025.03.06 |
|---|