관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

Numpy 1 - 배열 만들기 본문

인공지능/Numpy & Pandas

Numpy 1 - 배열 만들기

huenuri 2024. 7. 31. 13:44

조금 전에 요가를 했는데 정말 좋았다. 25분이라는 시간이 금방 지나갔다. 요가를 할 때면 내 몸을 천천히 또는 빠르게 움직이며 세포 하나하나를 만나게 되는 것 같다. 평소에는 잘 느끼지 못했던 감각들이 되살아나는 것을 느낀다. 앞으로는 매일 30분씩 요가를 꼭 해볼 생각이다. 그러다가 마음이 내키면 맨몸 운동을 해도 좋을 것 같다.

 

개발자는 주로 앉아서 작업을 하는 경우가 많아 자신의 몸이 굳어가는 것을 잘 감지하지 못할 때가 많다. 그러니까 평소에 몸을 잘 움직이며 몸도 마음도 유연해야 좋은 프로그램을 만들 수 있다고 생각한다. 우리의 뇌는 신체의 움직임에 매우 밀접한 연관이 있기에 어떤 것도 따로 떼어서 생각할 수 없다.

이제 Numpy와 Pandas 학습을 시작해보려고 한다. 다른 과목들은 모두 OT가 있지만 이 과목은 바로 1주 차 수업으로 들어간다. 첫 번째 단원은 배열에서 시작한다. 파이썬과 자바를 통해 배열을 어느 정도 학습했으니 어려워 보이는 이 과목도 충분히 소화할 수 있으리라 믿는다.


 

 

 

 

이론 1 - 배열 만들기

 

Numpy란 무엇이며 왜 필요할까?

 

데이터를 다루는데 왜 다차원 배열이 필요할까?

 

 

 

 

 

 

예를 들어, 숫자 데이터는 흑백 이미지는 해당 픽셀에 대한 밝기, 명암을 나타내는 2차원 배열 데이터로 표현이 가능하다. 즉, 한 픽셀에 대한 명암 데이터가 숫자로 나타나게 되는 것이다.
사운드 데이터는 시간 대비 음악을 나타내는 1차원 배열로 볼 수 있다. 가로축을 시간, 세로축을 음악이라고 표현한다면 이를 한 점씩 잡아 숫자 대비 배열로 표현할 수 있다.

이처럼 실생활의 많은 데이터를 배열로 표현할 수 있기에, 배열을 사용해 효과적으로 저장하고 가공하는 절차는 가장 근본적인 작업이다.

 

 

 

 

대용량 데이터를 저장하는데 파이썬 리스트를 활용할 수 있지 않은지 라는 질문을 던질 수 있다. numpy는 대용량 데이터를 관리하는데 파이썬보다 더 효율적이다.

 

 

 

 

 

 

Numpy에 배열을 만드는 방법

 

파이썬에서 0부터 9까지 숫자를 담기위해 리스트를 사용해 range로 담았다. numpy에서는 라이브러리를 통해서 numpy를 가져온다. numpy는 보통 as np로 줄여 쓴다. np의 array에서 리스트로 담긴 객체를 넣어주면 array 객체가 반환된다. 이것이 리스트로부터 numpy를 만들 수 있는 방법이다.

 

 

 

 

 

정수가 아닌 실수 형태가 리스트로 들어갔을 때는 모든 객체가 실수 형태로 바뀐다. 2차원 배열로도 실수 형태의 데이터도 만들 수 있다.

 

 

 

 

 

 

 

파이썬에서는 정수, bool형, 실수, 문자열 등의 모든 데이터가 리스트에 들어갔다면, numpy에서는 데이터 타입을 하나로 지정해서 들어가게 된다.
예시를 보면 데이터 타입을 실수로 지정했을 때, array는 소숫점의 숫자가 된다. astype으로 바꿀 자료형을 정수형으로 하면 실수형에서 정수형으로 바뀐다.

 

 

 

 

 

 

 

 

 

 

 

np.zeros

10개의 데이터가 0이 들어간 형태로 만들 수 있다.

np.ones

실수형으로 1이라는 숫자가 들어가며, (3, 5)는 배열의 차원을 구성한다. 이 튜플은 3 x 5 행렬도 만들게 된다.

np.arrage

파이썬의 range와 비슷하다. 이것은 0부터 20전까지 step을 2개 뛰면서 나오라는 뜻이다. (start, end, step)으로 구성할 수 있다.

np.linspace

0부터 1사이에서 5개로 나누어서 만들어주세요 라는 뜻

 

 

 

 

 

 

 

random

난수로 2x2 행렬로 표현할 수 있다.

normal

정규분포로도 만들 수 있는데, 평균이 0이고, 표준편차가 1인 데이터를 2x2 행렬로 표현한다.


 

 

 

 

퀴즈 1 - 배열 만들기

 


 

 

 

 

실습 1 - 배열 만들기

 


 

 

 

1. 문제 풀기

 

 

 

 

 

타입 애러가 발생했다. 이 오류는 다음과 같은 상황에서 발생한다.


 

 

 

2. 다시 풀어보기

 

 

이것은 5를 (3, 5)에 곱하라는 뜻으로 받아들이는 코드라고 한다. 분명 맞게 쓴 것 같은데 오류가 떠서 뭔가 하고 예시 코드를 복사하여 붙여 넣어보았다. 근데 콤마가 하나 빠져있었다.
코드를 쓸 때는 이런 작은 부분에도 신경을 써야 한다. 안 그러면 이 작은 차이가 엄청난 버그를 불러올 수 있기 때문이다.

 

 

 


 

 

 

 

학습을 마치고

numpy라는 말을 오늘 처음 들어보았는데 배열이 우리의 일상과 밀접한 관련이 있다는 말에 무척 신기했다. 이 자연에서 사인과 코사인의 함수를 어디서나 찾을 수 있듯이 배열도 그런 것 같다.
numpy/ pandas 과목은 9학점이기는 해도 수업의 양이 어마어마하게 많다. 필수 과목이라 꼭 들어야 하니 열심히 해봐야지.

 

numpy에 대해 조금은 알게 되는 시간이었다. 배열은 프로그래밍에만 사용되는 게 아니었다. 데이터에도 쓰이고 여러 곳곳에 많이 활용되니 배열이 아직 이해가 안 된다면 다음의 수업에 지장이 있을 것 같다.
처음 공부해보는 과목이라 정리하는데 많은 시간이 걸렸다. 이제 내일부터 본격적인 Numpy 학습을 진행해 볼 것이다.

'인공지능 > Numpy & Pandas' 카테고리의 다른 글

Numpy 6 - 집계함수 & 마스킹 연산  (0) 2024.07.31
Numpy 5 - 브로드캐스팅  (0) 2024.07.31
Numpy 4 - Numpy 연산  (0) 2024.07.31
Numpy 3 - Reshape & 이어 붙이고 나누기  (0) 2024.07.31
Numpy 2 - 배열의 기초  (0) 2024.07.31