상태이상 : 호기심 중독

이것저것 알아두면 언젠간 도움이 된다.

코딩/Python!

NumPy 배열 생성, max(), min() [Python]

IT코코아 2018. 6. 8. 03:11

NumPy

다차원 배열을 처리하는데 유용한 기능을 가진 파이썬 라이브러리 입니다.

numpy의 모든 배열은 'numpy.ndarray'라는 동일한 타입을 가지고 있습니다.

numpy배열에서 알아야 할 몇가지.

  • Rank : 배열의 차원을 표현.
  • shape : 배열의 차원과 차원의 크기를 표시.

Shape는 튜플로 표시됩니다.

ex) a = [1, 2, 3] 인 1차 리스트가 있다면 rank는 없으므로 shape는 (,3)이 됩니다.

튜플에서 한 개의 값만 나타낼경우 위 같이 표현됩니다.

ex) a = [ [1, 2, 3],

              [4, 5, 6] ] 이런 2차리스트가 있다면 Rank는 2, Shape는 (2,3)이 됩니다.

ex) a = [ [1, 2, 3] ] 이런 리스트는 Rank는 1, Shape는(1,3)으로 표현됩니다.

ex) a = [ [ [0, 0,],
                [0, 0,] ],
              [ [0, 0,],
                [0, 0,] ] ] 이런 3차 리스트의 Shape는 (2,2,2)가됩니다.

간단히 생각하면, shape는 각 차원에서의 행의 개수를 나타냅니다. (3차원 행, 2차원 행, 1차원의 열) 이런식으로 말이죠.

NumPy배열 생성함수.

  • zeros()
  • ones()
  • full()
  • eye()

기본적으로 ()안에는 Shape가 들어갑니다. 들어간 Shape대로 리스트가 생성됩니다.

import numpy as np #numpy라이브러리를 np라는 이름으로 가져온다.

t = (2,3)

n1 = np.zeros(t)
n2 = np.ones(t)
n3 = np.full(t, 9)
n4 = np.eye(5)
n5 = np.eye(5,3)

print(n1,n2,n3,n4,n5 ,sep="\n\n")

zeros()는 Shape대로 배열을 만들고 값들을 0으로 채워줍니다.

ones()는 Shape대로 배열을 만들고 값들을 1로 채워줍니다.

full()은 Shape와 채울값을 받은다음 배열을 Shape대로 만들고, 채우고자 하는 값으로 채워줍니다.

eye()는 n*n의 배열을 만들어주고 대각선값을 1로 채워줍니다.
인수값을 두개 넣어주면 n*m의 배열을 만들고 대각선 값을 1로 채워줍니다.

  • reshape()
  • arange()
  • max()
  • min()
import numpy as np

print("reshape")

x = [[0,0,0],
     [1,1,1]]
n1 = np.reshape(x,(6,1)) 
n2 = np.reshape(x,(3,2)) 
n3 = np.arange(2,10,3) #2부터 10까지 3더해가며.. 
n4 = np.arange(4) #0~3 
n5 = np.arange(4).reshape(2,2)

print(n1,n2,n3,n4,n5, sep="\n\n")

print("\n최대값, 최소값 찾기") 
y = [[1,2,3,4,5],
     [6,5,7,8,9]]
print(np.array(y)) 
max = np.max(y) 
min = np.min(y) 
print("최대값:{}\n최소값:{}".format(max,min))

reshape()는 리스트,newshape가 인수입니다.
변형할 리스트와 변경할 Shape를 넣으면되는 것.
이때 Shape를 변경할때 주의할 점이 있습니다.
변경전 Shape가 (2,3)이라고 하면 총 값이 6개 있는 것이죠..
근데 (3,3)으로 변경하겠다고 하면? 에러가 납니다.
왜나면 shape가 (3,3)이면 총 9개의 값을 가지고 있는 리스트이기 때문이죠.

즉, 값이 6개있는 리스트를 9개있는 리스트로 만들겠다는 말이됩니다.
이는 오류가 나게됩니다. 그렇기 때문에 변경할 shape는 꼭 이전의 shape안의 값들의 곱과 같도록 합시다.
(2,3) => 2*3 = 6이니까 변경가능한 shape는 (1,6) (6,1) (3,2)... 이런식으로 말이죠.

arange()는 총 3개의 수를 받아드리며 각각 "시작값, 종료값, 간격" 순으로 인수를 입력합니다.
즉, 리스트를 원하는 등차수열 값들의 나열로 만들수 있다는 것이죠.

꼭 3개의 인수 모두를 입력하지 않아도 됩니다.
2,10만(인수값 2개) 넣을경우 간격값은 1로 자동지정되고 2~9이 넣어진 리스트가 만들어집니다.
10만(인수값 1개) 넣을 경우 0~9까지의 값이 넣어진 리스트가 만들어집니다.

n5 = np.arange(4).reshape(2,2)는 한번에 2개의 함수를 사용가능하다는 것을 보여드리기 위해 넣었습니다.

np.max()는 리스트안에 최대값을 반환해주는 함수로, 인수값으로 리스트를 넣으면 됩니다.
단, 행에 대한 열의 값 개수가 일정한 리스트에서만 한가지 최대값을 반환해주고
행마다 열의 수가 다른 리스트에서는 최대값이 들어있는 행을 반환합니다.

np.min()는 리스트안의 최소값을 반환해주는 함수로, 인수값으로 리스트를 넣으면 됩니다.
np.max()와 같은 맥락으로 행마다의 열개수 차이가 있으면 같은점을 보입니다.

반응형

'코딩 > Python!' 카테고리의 다른 글

클래스 - 객체생성, 생성자, 소멸자, 생성자 오버로딩 [Python]  (0) 2018.07.20
함수 [Python]  (0) 2018.07.20
재귀함수 [Python]  (0) 2018.06.06
2차 리스트 [Python]  (0) 2018.05.28
리스트 [Python]  (0) 2018.05.11