본문 바로가기

Python

파이썬(python) Numpy와 ndarray?

반응형

● Numpy

 

numpy를 사용하는 이유
: 파이썬 리스트(list)보다 빠름

 

메모리 사이즈
: 파이썬 리스트보다 적은 메모리 사용

 

Build-in 함수
: 선형대수, 통계 관련 여러 함수 내장

 


● ndarray


numpy에 사용되는 다차원 리스트를 표현할 때 사용되는 데이터 타입
연속된 메모리 사용

 

vs


python list
연속되지 않은 메모리
명시적인 loop 사용

 

 


● 예제 1

 

import numpy as np
import matplotlib.pyplot as plt

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

print(x)
print(y)

plt.plot(x, y)

 

결과 : 

 

● 예제 2 

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y, color='red', marker='o')

# 그래프 제목 설정
plt.title('Example Plot')

# x축, y축 레이블 설정
plt.xlabel('X values')
plt.ylabel('Y values')

# 그래프 표시
plt.show()

 

결과 : 

 


넘파이, 넘파이 모듈함수를 사용하는 이유는 결국 데이터를 만들기 위해서다. 게다가 list보다 빠르고 효율적이라서 numpy모듈을 사용한다. 

 

 

▶ numpy 모듈 함수

 

1. 

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


y = np.array([[2,3,4], [1,2,5]])          #2행 3열의 행렬 생성 
print(y)

print(type(y))

 

2. 

np.arange(10)             # numpy.arange: 지정된 범위의 값으로 배열을 생성합니다.

3. 

np.arange(1, 10)

4. 

 

# 5에서 100까지 간격 5인 ndarray 생성
np.arange(5, 101, 5)

 

5.

np.ones, np.zeros로 ndarray 생성하기

np.ones((4,5))       # 4행 5열의 모든 요소가 1인 2차원 배열을 생성합니다.
np.ones((2, 3, 4))      # 3행 4열 행렬이 2개 있다. 3차원 배열.
np.zeros((2, 3, 8, 8))  #8행 8열 행렬이 3개있고 2묶음 있다. 
np.empty((3,4))         #특정값으로 초기화 되지 않은 배열
np.full((3,4,2), 7)   # 4행 2열 x 3개, 7로 채움

 

6.

np.eye로 ndarray로 생성하기

  • 단위 행렬 생성 (대각선에 1이 대입되어 있는 행렬)
np.eye(5)     # 2차원 단위행렬 생성. 1행에 5개의 데이터가 들어감.

 

7. 

np.linspace로 ndarray 생성하기

np.linspace(1, 10, 3)     # 1부터 10사이 3개 수 생성. 간격이 동일한 조건으로. 
np.linspace(1, 10, 4)
np.linspace(1, 10, 5)

 

8. 

reshape 함수 사용

  • ndarray의 형태, 차원을 바꾸기 위해 사용
x = np.arange(1, 16)
print(x)

x.shape             # 튜플로 표시됨. 1차원 1개로 표시됨 

x.reshape(3,5)      # 1차원이 3행 5열의 행렬로 바뀜 

x.reshape(5,3)

x.reshape(5, 3, 1)  # 3행 1열이 5개 있다. 3차원. 

# x.reshape(5, 4) # 숫자가 최소한 20개 필요함. 15개밖에 없어서 에러 발생.

 

반응형