IT학습/Library

[numpy] 난수 추출, 배열의 연산

바틀비 2024. 1. 8. 12:00

핵심: 
random.rand(), random.randint(), sum(), mean(), std(), var()
dot(), transpose(), linalg()

난수 무작위 추출

  • np.random.rand(a, b, c): 0부터 1사이의 실수를 랜덤으로 추출 후 배열. 1, 2, 3차원 모두 가능함
  • np.random.randint(c, d, n): c와 d 사이의 n개의 정수를 랜덤으로 추출 후 배열. 이때 d는 포함 안 됨
  • 이때 n에 정수 대신 (e, f) 같은 방식으로 tuple을 넣어 배열을 만들 수 있다.
더보기
np.random.rand(2)

"""array([0.19517298, 0.74078605])"""

np.random.rand(2, 3, 4)

"""
array([[[0.05838049, 0.77316909, 0.43440915, 0.79715024],
        [0.21047321, 0.63574471, 0.75975147, 0.9792842 ],
        [0.39140929, 0.87225704, 0.94180161, 0.18698488]],

       [[0.58026044, 0.37524648, 0.07291529, 0.58106713],
        [0.8274608 , 0.71057556, 0.38917515, 0.42376158],
        [0.57083032, 0.25009017, 0.75198329, 0.21797765]]])
 """

np.random.randint(1, 100, 5)

"""array([40, 86, 65, 28, 33])"""

np.random.randint(1, 100, (2, 3, 4))

"""
array([[[71, 83, 87, 39],
        [11, 60, 17, 25],
        [59, 17, 96, 51]],

       [[93, 71, 46, 54],
        [26, 50, 47, 55],
        [21, 27, 35, 16]]])
"""

배열의 연산

  • 합, 평균, 표준편차, 분산, 최솟값, 최댓값, 누적합, 누적곱 메서드가 존재한다
  • 기술통계량(Descipttive Statistic): 현재 데이터 상태를 표현하는 통계량
더보기
arr3 = np.arange(5)
print(f'arr3는 {arr3}')
print(arr3.sum())
print(arr3.mean()) #평균
print(arr3.std()) #표준편차
print(arr3.var()) #분산

"""
arr3는 [0 1 2 3 4]
10
2.0
1.4142135623730951
2.0
"""

행렬연산

더보기
A = np.array([2, 3, 4, 5]).reshape(2, 2)
B = np.array([6, 7, 8, 9]).reshape(2, 2)
print(A)
print(B)

"""
[[2 3]
 [4 5]]
[[6 7]
 [8 9]]
"""

# 행렬의 곱셈
A.dot(B)

"""
array([[36, 41],
       [64, 73]])
"""

# 배열의 곱셈 기능도 존재함
a = np.array([2, 3, 4, 5])
b = np.array([6, 7, 8, 9])

a.dot(b)

"""
110
"""

#전치행렬 -> 행렬의 행과 열을 바꾼 행랼
A.transpose()

"""
array([[2, 4],
       [3, 5]])
"""

#역행렬
np.linalg.inv(A)

"""
array([[-2.5,  1.5],
       [ 2. , -1. ]])
"""