본문 바로가기
머신러닝 딥러닝

0816 Numpy2

by 대금부는개발자 2021. 8. 16.
SMALL

ndarray를 만드는 또 다른 방법

import numpy as np

arr = np.zeros((3,4)) #안에 요소로 shape이 나와요 default data type은 np.float64
print(arr)   [[0. 0. 0. 0.]
              [0. 0. 0. 0.]
              [0. 0. 0. 0.]]
        
arr = np.ones((2,3))
print(arr)    [[1. 1. 1.]
               [1. 1. 1.]]
    


arr = np.empty((5,6))#내용을 비워주는 게 0으로 채워주는 게 아닌 garbage값으로 채워져요
print(arr) 

arr = np.full((3,4), 9) #내가 원하는 값으로 채워주세요
print(arr)     [[9 9 9 9]
                [9 9 9 9]
                [9 9 9 9]]
        
arr = np.array([[1,2,3],[4,5,6]], dtype=np.float64)
print(arr)    [[1. 2. 3.]
               [4. 5. 6.]]
    
result = np.zeros_like(arr) #numpy array처럼 생긴 arr을 만드는데 zero로 채워라
print(result)   [[0. 0. 0.]
                 [0. 0. 0.]]

 

 

 

ndarray를 생성하는 또 다른 방법 1

import numpy as np

a = range(0,10,1)          #python의 range
print(a) # range(0, 10) 데이터 요소를 가지고 있지 않아요.

arr = np.arange(0,10,2) 
print(arr) # [0 2 4 6 8]    실제 데이터를 가지고 있어요!

 

 

ndarray를 생성하는 또 다른 방법 2

 

import numpy as np

#np.linspace(start, stop, num) 인자가 세게 들어가요
#start에서 stop까지 범위에서 num개를 균일한 간격으로 원소를 생성하고 배열을 만들어요!

arr = np.linspace(0,10,10) # 0부터 10까지 균일하게 10개씩 들어가요
print(arr)   [ 0.          1.11111111  2.22222222  3.33333333  4.44444444  5.55555556
                 6.66666667  7.77777778  8.88888889 10.        ]
arr = np.linspace(0,10,11)
print(arr)   [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

 이해하기가 힘들어서 그래프로 그려보아요!
그래프를 그리려면 당연히 module을 설치해야 해요! 가장 기반이 되는 module은 matplotlib이에요.

 

 

anaconda prompt  이용

conda install matplotlib

 

 


import numpy as np
import matplotlib.pyplot as plt

arr = np.linspace(0,10,11)
print(arr)  [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]


plt.plot(arr, '*')
plt.show()

 

 

 

 

ndarray를 만드는 또 다른 방법(랜덤하게 생성)
5가지 형태로 랜덤하게 ndarray를 생성할 수 있어요!

 


import numpy as np
import matplotlib.pyplot as plt

 

 np.random.normal() : 정규분포(종모양) 확률밀도함수에 실수 표본을 추출해서 ndarray를 생성
 정규분포 그래프를 위해 평균, 표준편차가 필요해요 mean은 평균 std은 표준편차

mean = 50
std = 2
arr = np.random.normal(mean,std,(100000))  #(100000,)은 내가 만들려는 numpy array의 shape
print(arr)  #[52.35403303 51.85425 51.91373215 ... 50.59983786 46.84310957 45.97543047]
plt.hist(arr,bins=100) #hist는 단위 안에 몇 개가 들어있는지 count, bins는 몇 개의 영역이 있느냐?
plt.show()

 

 

 

np.random.rand(d1,d2,d3...): 0 이상 1 미만의 균등 분포 확률 밀도 함수에서 실수 표본을 추출해서 ndarray를  생성
인자 d1이 하나 나오면 1차원 2개나오면 2차원 3개 나오면 3차원 #shape을 이용하지 않고 파라미터 개수를 가지고 사용
arr = np.random.rand(2,3) #인자가 2개라 2차원 2,3은 2행 3열
print(arr)    [[0.62233971 0.0201332  0.6837459 ]
               [0.40869431 0.64798306 0.0649948 ]]
    
arr = np.random.rand(100000)
print(arr)
plt.hist(arr,bins=100) #bins는 100개의 간격
plt.show()

 

 

 

 

np.random.randn() : 표준 정규분포상에서 실수 표본을 추출해서 ndarray를 생성
표준 정규분포 → 평균이 0이고 표준편차가 1인 정규분포를 지칭

arr = np.random.randn(100000)
print(arr)    [ 0.353989   -0.1311781  -1.0468134  ...  0.136605    0.37405001
                0.33656503]
plt.hist(arr,bins=100) 
plt.show()

 

 

 

 

np.random.randint(low, high, shape): 최솟값과 최댓값 사이에서 정해진 shape으로 난수를 추출해서 ndarray를 생성 →                                                  균등 분포를 이용해서 난수 추출

arr = np.random.randint(-100,100,(100000,)) #최소, 최대, shape
print(arr) # [-67  87  26 ... -14 -78  67]
plt.hist(arr,bins=100) 
plt.show()

 

 

 

np.random.random(shape): 0 이상 1 미만의 균등 분포에서 실수형 난수를 추출해서 ndarray를 생성
#rand와 비슷하지만 shape을 이용


arr = np.random.random((100000,)) 
print(arr)  #[0.6510645  0.84021036 0.88525935 ... 0.85323155 0.09541536 0.0706494 ]
plt.hist(arr,bins=100) 
plt.show()

 

 

 

random 값을 이용해서 ndarray를 생성하는 방법!

 

1. python 의 list를 이용해서 ndarray를 생성 → np.array()

2. np.ones(), np.zeros(), np.full(), np.empty(), np.ones_like()

3. np.arange()

4. np.linspace()

5. np.random.~~() 랜던값으로 ndarray를 생성하는 5가지 함수

LIST

'머신러닝 딥러닝' 카테고리의 다른 글

0818 Numpy 6  (0) 2021.08.18
0817 Numpy5  (0) 2021.08.17
0817 Numpy4  (0) 2021.08.17
0816 Numpy 3  (0) 2021.08.16
0816 Numpy  (0) 2021.08.16

댓글