Numpy 배열(ndarray)은 다차원 데이터를 처리할 수 있는 기본적인 데이터 구조
import numpy as np
# 1차원 배열 생성
a = np.array([1, 2, 3])
# 2차원 배열 생성
b = np.array([[1, 2, 3], [4, 5, 6]])
# 3차원 배열 생성
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
NumPy 배열의 크기를 확인하는 방법 -> shape 속성을 사용
print(a.shape) # (3,)
print(b.shape) # (2, 3)
print(c.shape) # (2, 2, 2)
NumPy 배열은 다른 배열 또는 스칼라와의 연산을 지원합니다. NumPy 배열의 연산은 배열의 원소별(element-wise)로 이루어집니다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 원소별 덧셈
c = a + b # [5, 7, 9]
# 원소별 곱셈
d = a * b # [4, 10, 18]
# 스칼라와의 연산
e = a + 1 # [2, 3, 4]
NumPy 배열의 연산에는 다양한 함수와 메소드가 있습니다. 가장 기본적인 연산은 sum, mean, min, max입니다.
a = np.array([1, 2, 3])
# 합계
b = np.sum(a) # 6
# 평균
c = np.mean(a) # 2.0
# 최소값
d = np.min(a) # 1
# 최대값
e = np.max(a) # 3
np.zeros() 함수는 모든 원소가 0인 배열을 생성합니다. 함수의 인수로는 생성할 배열의 크기를 지정합니다. 예를 들어, 크기가 2x3인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.zeros((2, 3))
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[[0. 0. 0.]
[0. 0. 0.]]
위의 출력 결과에서 보듯이 np.zeros() 함수는 모든 원소가 0인 배열을 생성합니다.
np.ones() 함수는 모든 원소가 1인 배열을 생성합니다. 함수의 인수로는 생성할 배열의 크기를 지정합니다. 예를 들어, 크기가 2x4인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.ones((2, 4))
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[[1. 1. 1. 1.]
[1. 1. 1. 1.]]
위의 출력 결과에서 보듯이 np.ones() 함수는 모든 원소가 1인 배열을 생성합니다.
np.arange() 함수는 범위 내의 일정 간격을 가진 배열을 생성합니다. 함수의 인수로는 생성할 배열의 범위와 간격을 지정합니다. 예를 들어, 범위가 1에서 10까지이고 간격이 2인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.arange(1, 10, 2)
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[1 3 5 7 9]
위의 출력 결과에서 보듯이 np.arange() 함수는 범위 내의 일정 간격을 가진 배열을 생성합니다.
np.linspace() 함수는 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성합니다. 함수의 인수로는 생성할 배열의 범위와 원하는 개수를 지정합니다. 예를 들어, 범위가 0에서 1까지이고 원하는 개수가 5개인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.linspace(0, 1, 5)
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[0. 0.25 0.5 0.75 1. ]
위의 출력 결과에서 보듯이 np.linspace() 함수는 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성합니다.
np.random.random() 함수는 0과 1사이의 균등 분포에서 난수를 생성하여 배열을 만듭니다. 함수의 인수로는 생성할 배열의 크기를 지정할 수 있습니다. 예를 들어, 크기가 3x3인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.random.random((3, 3))
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[[0.8139928 0.79544491 0.43146849]
[0.30136094 0.77515306 0.64259144]
[0.02956163 0.74888294 0.56169272]]
위의 출력 결과에서 보듯이 np.random.random() 함수는 지정된 크기의 배열을 생성하며, 배열의 각 원소는 0과 1 사이의 난수로 채워집니다.
np.random.randn() 함수는 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수를 생성하여 배열을 만듭니다. 함수의 인수로는 생성할 배열의 크기를 지정할 수 있습니다. 예를 들어, 크기가 2x4인 배열을 생성하려면 다음과 같이 코드를 작성합니다.
import numpy as np
arr = np.random.randn(2, 4)
print(arr)
위 코드의 출력 결과는 다음과 같습니다.
[[ 0.52346546 0.30785207 0.63301317 -0.03108197]
[ 1.37352221 -1.26632616 -1.15567608 -0.52687134]]
위의 출력 결과에서 보듯이 np.random.randn() 함수는 지정된 크기의 배열을 생성하며, 배열의 각 원소는 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수로 채워집니다.
그 외에도 Numpy에는 많은 유용한 함수들이 내장되어 있는데 대표적인 몇가지 함수들을 소개해드리려고 합니다.
NumPy 모듈의 랜덤 함수를 사용하여 다양한 분포에서 난수를 생성할 수 있습니다. 이를 통해 데이터의 모의 실험을 수행하거나 시뮬레이션을 구현할 수 있습니다. numpy.random 모듈의 경우는 다양한 종류의 확률분포로부터 효과적으로 표본 값을 생성하는데 사용됩니다.