[Python] 넘파이 맛보기
by Ungbae

본 게시글은 학부 수업 '컴퓨터 프로그래밍 1'과 수업 교재 '파워 유저를 위한 파이썬 Express' 를 토대로 이해한 내용을 정리하였습니다.

컴퓨터 과학의 길을 걷기 시작하면서, 고등학교 이후로 등한시 했던 수학에 다시 흥미를 가지게 되었다. 요즘 고등 교육과정에는 행렬이 빠졌다고 하는데... 다행히 라떼 시절에는 선택과목이 아니었던 시절. 그 덕에 미적분학과 선형대수는 나에게 다행히 친숙하다. 하지만 이 추상적이기만한 이 수학과목을 도대체 어디에 쓸고... 늘 궁금했던 찰나. 나는 드디어 그 궁금증의 답을 여기 머신러닝에서 찾았다. 머신러닝의 주요 알고리즘인 선형대수와 통계학.
그 선형대수를 코딩에 접목하기 위해서는 넘파이를 알아야 했다.
넘파이 또한 컴퓨터 과학에서는 꽤 오래된 근본있는 친구다. 그러기에 매우 방대한 기능을 지원하고 있다. 이걸 한 번에 다 완벽히 숙달으르 하는 것은 상당한 시간과 경험이 필요하기에 오히려 노베이스가 각잡고 다 배우겠다고 하는 것은 비효율적. 비교적 간단히 맛보고 사용법을 익힌 다음 실제 실무에 뛰어들었을 때 본격적으로 사용하면서 실력을 늘리는게 더 낫다고 한다.

Numerical Python을 의미하는 NumPy
파이썬에서 선형대수 기반의 프로그램을 만들 수 있도록 도와주는 고마운 패키지
루프를 사용하지 않고도 데이터의 배열 연산을 가능하게 한다.
이 말로는 아직 와닿지 않는다... 그냥 선형대수를 코딩으로 할 수 있게 한다는 것
넘파이란?
- 넘파이(NumPy)는 행렬(Matrix) 계산을 위한 파이썬 라이브러리 모듈이다.
- 처리 속도가 중요한 인공지능이나 데이터 과학에서는 파이썬의 리스트 대신에 넘파이를 선호한다.
- scikit-learn이나 tensorflow 패키지도 모두 넘파이 위에서 작동
리스트보다 넘파이의 배열이 훨씬 빠르다
- 리스트는 여러 개의 값들을 저장할 수 있는 자료구조로서 강력하고 활용도가 높다.
- 리스트는 다양한 자료형의 데이터를 여러 개 저장할 수 있으며 데이터를 변경하거나 추가, 제거할 수 있다.
# 리스트의 예시
scores = [10, 20, 30, 40, 50, 60]
- 데이터를 처리할 때는 리스트와 리스트 간의 다양한 연산이 필요
- 파이썬 기본 리스트는 이러한 기능이 부족하며 연산 속도도 빠르지 않다.
- 데이터 과학자들은 기본 리스트 대신 Numpy를 선호

그림에서 볼 수 있듯이 리스트에서는 데이터가 흩어져 있어서 다음 데이터를 찾기 어렵다.
데이터가 연속적인 공간에 있어야 다음 데이털르 찾기가 쉽다.
물론 더 깊은 전공의 영역으로 가면 C++의 포인터 등을 활용한 연결리스트나 트리가 있지만 그건 다른 게시물을 참고할 것
우선 넘파이를 써먹기 위해서 아래 코드처럼 넘파이를 불러오자
import numpy as np

import numpy as np
# 우리가 화씨 온도로 저장된 미국 도시의 기온 정보를 얻었다고 가정하자
ftemp = [63, 73, 80, 86, 84, 78, 66, 45, 54, 63]
이 리스트를 넘파이의 배열로 변환하려면 아래의 코드와 같이 넘파이 모듈의 array() 함수를 호출하면 된다.
F = np.array(ftemp)
# 출력 결과
# array([63, 73, 80, 86, 84, 78, 66, 45, 54, 63])
배열 간 연산
+ 연산자나 * 연산자와 같은 수학적인 연산자를 얼마든지 적용할 수 있다.
import numpy as np
A = np.array([1, 2, 3, 4])
B = np.array([5, 6, 7, 8])
result = A + B # 넘파이 배열에 + 연산이 적용된다.
# 출력 결과
# array([6, 8, 10, 12])

+ 외에도 모든 연산자가 가능하다.
a = np.array([0, 9, 21, 3])
a < 10
# 출력 결과
# array([True, True, False, True])
2차원 배열
b = np.array([[1,2,3], [4,5,6], [7, 8, 9]])
b
# 출력 결과
array([[1,2,3],
[4,5,6],
[7,8,9]])
b[0][2]
# 출력 결과
3

'CS & AI > Python' 카테고리의 다른 글
| [Python] 내장함수 (1) | 2025.06.10 |
|---|---|
| [Python] 파일 그리고 예외처리 (2) | 2025.06.10 |
| [Python] 객체와 클래스 (1) | 2025.06.09 |
| [Python] 2차원 리스트 - 파이썬 자료구조 (0) | 2025.05.29 |
| [Python] 리스트(List) 심화 - 파이썬 자료구조 (1) | 2025.05.28 |
블로그의 정보
그럼에도 불구하고
Ungbae