데이터 분석/numpy

파이썬 numpy 행렬 만들기

iminu 2022. 4. 27. 18:08

특정 값으로, 행렬 만들기

# 6 으로 10개짜리 1차원 배열을 만드세요
np.full(10,6)
# array([6, 6, 6, 6, 6, 6, 6, 6, 6, 6])

# 6 으로 채워진 2행 3열짜리 행렬을 만드세요
np.full((2, 3), 6)
# array([[6, 6, 6],
#        [6, 6, 6]])

0과 1로 채우기

np.ones((3, 5))
# array([[1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.]])
       
np.zeros((3,5))
# array([[0., 0., 0., 0., 0.],
#        [0., 0., 0., 0., 0.],
#        [0., 0., 0., 0., 0.]])

정수의 배열을 얻고자 할때

np.arange(9 + 1)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# 3부터 20까지의 정수중 홀수만 만드세요
np.arange(3, 20 + 1, 2)
# array([ 3,  5,  7,  9, 11, 13, 15, 17, 19])

정수 말고 실수를 얻고자 할때

# 0부터 25까지의 실수 10개를 가져오세요
np.linspace(0, 25, 10)
# array([ 0.        ,  2.77777778,  5.55555556,  8.33333333, 11.11111111,
#        13.88888889, 16.66666667, 19.44444444, 22.22222222, 25.        ])
       
np.linspace(0, 25, 10, endpoint= False)
# array([ 0. ,  2.5,  5. ,  7.5, 10. , 12.5, 15. , 17.5, 20. , 22.5])

이렇게 1차원 배열을 얻은 후, 우리는 이것을 가지고 여러차원으로 만들 수 있다.

reshape

np.arange(5, 30).reshape((5, 5))

# array([[ 5,  6,  7,  8,  9],
#        [10, 11, 12, 13, 14],
#        [15, 16, 17, 18, 19],
#        [20, 21, 22, 23, 24],
#        [25, 26, 27, 28, 29]])

랜덤값으로 채워진 배열을 만들 수 있다.

# 넘파이에서는 랜덤으로 수를 채우는, 행렬을 제공한다.
np.random.random((3, 4))
# array([[0.58686352, 0.36179287, 0.34962168, 0.07714271],
#        [0.07544062, 0.09915818, 0.71302533, 0.71173274],
#        [0.93683057, 0.33314641, 0.82256852, 0.92437724]])

np.random.randint(start, stop, size = shape)

시작값과 끝값을 줄 수 있다.

np.random.randint(1, 6, (3, 4))
# array([[3, 4, 2, 5],
#        [4, 4, 2, 2],
#        [3, 4, 3, 4]])

정규분포를 만족하는 랜덤값으로 채우기

np.random.normal(mean, standard deviation, size=shape)

np.random.normal(170, 10, (2, 3))
# array([[160.82020044, 180.88250157, 172.82545527],
#        [172.63958709, 168.92942062, 177.29288586]])