경기도미래기술학교 AI개발자 부트캠프 20일차 TIL- Numpy를 배운날. Numpy란? ndarray ,reshape

2023. 6. 5. 18:12python

반응형

 

 

Numpy를 배웠다. 오늘 배운 것은 Pandas에서 개념이 좀 추가된 느낌이여서.. 우선 천천히 정리를 해보자.

 

Numpy란?  Numerical Python의 약자로 Numerical은 숫자/수치적인 이라는 의미이다. 뭔가 계산적인 것과 관련된 것을 하는 라이브러리임을 암시한다.

 

실제로 Numpy는 배열, 선형 대수, 통계 등의 수치 계산 작업을 효율적으로 처리하기 위해 개발되었다.

 

ndarray란 n차원 배열을 나타내는 용어이다.  n-Dimensional의 약어이다.

 

3차원 배열을 처음 만들어봤다. 3차원 배열은 row, column, depth(channel)이라고 부른다고 하는데 사람들마다 좀 다르게 부르나 보다. 4차원까지 가면 time이나 batch라고 부른다고 한다.

 

ndarray도 [] 이게 인덱스 연산이라고 보면 된다. list와 같은 문자라고 list라고 생각하면 안된다.

# 1-4.파이썬 3차원 배열로 numpy 배열 생성하기
#shape = (2,3,2)

data = [[[1,2],[3,4],[5,6]],[[7,8],[1,3],[6,7]]]

# data

ar = np.array(data, dtype=float)
print(ar)
print(ar.shape, ar.ndim, ar.dtype)

#shpae = (3,2,2)

data1 = [[[1,2],[3,4]],[[5,6],[7,8]],[[9,0],[11,12]]]
ar1 = np.array(data1, dtype=float)
print(ar1)
print(ar1.shape, ar.ndim, ar.dtype)

3차원 말아보기. dtype=float으로 하면 float형으로 변환도 가능하다. 

 

np.zeros(5) 하면 0이 5개인 배열이 생긴다.

 

np.ones도 있다. np.ones((3,4)) 했더니 3행 4열의 1이 생겼다. 또 (()) 라고 한 이유는 이것이 튜플이기 때문이다.

 

np.full((3,4),1234) 도 했다. 이렇게 하면 1234로 채워진 3행 4열 데이터들이 나온다.

 

np.eye는 단위행렬이다.(Identity Matrix) 처음 들어보는 단어다. 정사각형 행렬에서 주 대각선이 모두 1이고 나머지 원소들이 모두 0인 행렬이다.

단위행렬은 역행렬 계산이나 선형 변환, 선형 방정식의 해를 구할 때 사용할 수 있다.

 

reshape() 를 사용하면 기존에 있던 배열을 재배열 해준다. 대신 분배가 꼭 맞아야 한다.

그리고 꼭 앞을 맞춰주지 않고(-1)을 하는 것 만으로도 axis1만 맞춰주면 알아서 맞춰준다.

 

브로드캐스팅.

 

0,1,2에 각각 5가 더해져서 결과가 나왔다. 밑에는 3행 3열의 1로 채운 숫자가 arange(3)과 더해져 아래의 결과가 나온 모습이다.

Numpy의 집계함수이다. 다만 median의 경우는 np.median으로 변수 종속이 아닌 모듈을 가져와야 했다.

 

선형대수 연산은 나중에 다시 알아보자..

 

Fancy Indexing

array에 [3,1,6,9,8,4,10] 일 때

[[1,3,5]] = [1,9,4]가 나온다.

[]첫번 째 까지는 인덱스연산 시작한다. 가 맞고

[[]] 이렇게 두번 째부터는 리스트로 읽으면 된다.

 

 

boolean Indexing은 위치값을 불러온다.

 

import numpy as np


array_num = np.arange(start=1, stop=11)

boolean_test = np.array([False, False, True, True, False, True, False, True, False, True])

array_test = array_num[boolean_test]

print(array_test)

 

numpy는 key, value가 없어서 argsort()를 주로 사용한다.

728x90