# AI 이론/Numpy

[Numpy] 넘파이 배열생성

alz 2022. 1. 5. 19:09

넘파이란?(배열 생성,난수,인덱싱)

파이썬 외부 라이브러리로, 딥러닝 구현시에, 행렬및 배열연산을 간편하고 빠르게 해주는 라이브러리이다.

 

● 배열의 생성 

array.ndim : 배열의 차원 수를 표시

1차원 : [1,2,3,4..]

2차원 : [[1,2],[3,4]]

3차원 :[[[1,2,3,4]]] 

array = [1,2,3,4,5,6,7,8] 대신 arange()로 대신 표현이 가능하다.

 

arange(1,9)로 나타낸 배열

array.arange(start,end,size =(a,b)) 형태로 표현

범위 : [start,end-1] 

size = (a,b) 는 a 행 b 열로 배열을 생성 의미

 

 

「ones(),zeros(),full() 로 배열 채우기」

zeros((n,m),dtype = "배열값 형") 와같이 씀

 

full((n,m),값)의 경우에는 n행 m열의 배열을 생성후 배열값을 뒤에 나오는 값으로 채운다

 

Rand 를 통한 배열 생성

 

random.rand(n,m) : n x m 의 배열을 생성하는데 , 이때 rand의 배열값 범위는[0,1)값을 갖는다.

rand()내에 변수 1개만 입력시, 1차원 배열을 생성하는데 입력한 값만큼 열을 생성한다.

 

Randint 를 통한 배열 생성  

Randint를 이용한 1,2차원 배열 생성

random.randint(a,b,size=(n,m)) : [a,b) 사이 임의의 정수로, n행m열의 배열을 생성  size내부에 변수 하나만을 입력시 1차원 배열생성

 

Normal을 이용한 표준편차 배열 및 pyplot 으로 그래프 그리기      

normal(평균,배열의개수,배열의 크기)로 나타낼 수 있다.

각 원소마다 표준편차 그래프를 그려보면 (*matplotlib.pyplot 라이브러리를 사용해야함)

 

맷플로립으로 표현한 그래프

plt.hist(배열,몇개의 구간으로 나눌것인지 표현)

plt.show() : 그래프를 표현

 

 

Seed를 통한 난수 생성 및 유의점

Seed 값이 같다면, 난수 생성값도 같지만, Seed값이 다르면 난수 생성값이 다르다!

 

 

배열의 인덱싱(Fancy,Boolean)

 

배열의 인덱싱 일부는 파이썬 배열과 거의 비슷해서 어려움은 딱히 없었다.

 

reshape은 뒤쪽에서 마저 설명할것인데, 대충 arr의 배열을 3x4 행렬로 만든다라는 의미이다.

arr[:,:3] 부분을 살펴보면, [:,:3]에서 앞부분 :는 모든을 의미하기때문에, 모든행을 의미

[:,:3]에서 :3부분은 [0,3)까지를 의미한다. 즉 0,1,2열을 의미하기 때문에, 해당 배열값은 모든 행에 대하여 [0,2]열을 출력

 

「Fancy Indexing」

[41]번의 경우에는 크게 복잡하지 않다. arr[[0,2,4]]는 0,2,4번 인덱스에 있는 값을 출력하라는 의미

[46]번을 보면, 3x4 행렬이다. arr[[0,2],2:] 의미를 살펴보면, 우선 arr[[0,2],2:] 부분에서는 0번과 2번만 출력하겠다라는 의미이고, 이때

앞부분은 행이다. 즉 0행 2행만을 출력

arr[[0,2],2:] 에서 2:는 두번째부터 끝까지라는 의미로, 열에 위치해있으므로, 인덱스가 2부터 끝까지 출력한다는 의미이다

 

 

「Boolean Indexing」

print(arr[[True,False,True,True]])의 경우에는 ,True인 인덱스만을 출력하라는 의미이다. 즉

Index = 0,2,3을 출력하라는 의미이므로, print(arr[[0,2,4]])와 같은말이다.

다음 2차원 배열을 살펴보면,

print(arr[[True,False,True],True]) 부분은 행 부분이다. 즉 0,1,2행중 0,2행만을 출력하고,

print(arr[[True,False,True],True]) 이부분은 모든열을 의미한다(브로드캐스팅) 즉,

print(arr[[True,False,True],[True,True,True,True]])와 같은 의미이다.

 

 

'# AI 이론 > Numpy' 카테고리의 다른 글

[Numpy] N차원 배열 정렬 및 형태 변경  (0) 2022.01.06
[Numpy] 배열의 연산 및 벡터 내적  (0) 2022.01.05