파이썬/numpy

Numpy에 대해 알아보자

이석사 중 2021. 10. 7. 17:14
728x90

첫 주자는 Numpy 입니다

numpy는 행렬이나 대규모 다차원 배열을 쉽게 처리하도록

도와주는 라이브러리입니다

데이터 구조, 행렬이나 배열 뿐만 아니라 수치 계산을

위한 모듈들도 모함되어 있어

효율적인 계산을 가능하게 합니다

다른 라이브러리 Matplotlib나 Pandas,

최근에 나온 Tensor Flow 까지 연동이 될 정도로

범용성이 좋습니다

numpy를 불러오기 위해서는

import numpy as np라는 구문으로

numpy를 import를 시켜야 하고

np는 우리가 원하는 이름으로 설정이 가능합니다

이렇게 import를 시키면 언제든지

numpy 라이브러리를 사용할 수 있습니다

기본적인 단위는 array로 데이터를 관리하고 연산합니다

array는 행렬이라는 뜻입니다

위에 사진에서 보시다 싶이 먼저

리스트 형태로 ar이라는 변수를 만들었습니다

[]형태로 이루어진 자료형을 list

()는 튜플(tuple), {}는 딕셔너리(dictionary)라고 합니다

튜플이나 딕셔너리는 추후에 요소 변경이

힘들기 때문에 리스트 형태로 하는 것이 좋습니다

np.array 모듈을 이용해서 array 형태로 바꿔줍니다

type 모듈을 이용하면 내가 입력한 자료가 어떤 타입인지를 알려줍니다

리스트 형태를 list라고 나오고

array는 ndarray라는 자료형으로 나옵니다

1차원 array는 물론 2차원도 가능합니다

np.shape를 이용하면 어레이가 어떤 형태로 이루어졌는지를 보여줍니다

맨 위의 사진은 1차원이기 때문에 5,라는 형태로

바로 위에 사진은 2차원이기 때문에 3,3으로 나옵니다

numpy의 기보 자료형들입니다

위에 사진처럼 구성이 되어있으니 참고하시면 될 것 같습니다

단일 숫자로 array를 채우는 것도 가능합니다

아쉽게도 0과 1만 지원을 합니다

더 편리한 모듈로 arange가 존재합니다

맨 위에 써진 것 처럼

np.arange(start, stop, step)형태로 이루어 지며

시작, 끝, 간격을 정해주면 됩니다

그리고 사진에서 특이한 점을 찾으셨나요?

리스트 형태와 array형태를 차이를 보여준 건데요

리스트 형태로 더하기를 하면 연장하는 식으로 더해집니다

하지만 array형태는 각 요소들을 더하고 빼고 곱하고 나누는게 가능합니다

Broadcast라는 모듈은 길이가 다른 array를 연산이 가능하게 해주는 모듈입니다

위 사진에서 보시면 a와 b는

차원도 다르고 길이도 다릅니다

하지만 자동으로 a를 [1, 2, 3],[1, 2, 3]으로 만들어주어서

연산이 가능하게 합니다

모듈을 입력하거나 하지 않아도 자동으로 사용이 됩니다

다음은 인덱스입니다

인덱스는 요소들에게 붙어있는 번호와 비슷하며

학창시절에 출석 번호 같은 것 입니다

리스트 a안에 잇는 자료를 [숫자] 형태로 꺼내올 수 있습니다

:는 끝을 의미하면 :4는 처음부터 4까지, 5:는 5부터 끝까지라는 뜻입니다

이번에는 난수 생성기에 대해 알아보겠습니다

긴글이 싫으신 분들을 위해 주석을 몇개 달아두었습니다

np.rand는 0이상 1미만 즉, [0, 1) 범위내에 정규분포를 가지는 난수를 만듭니다

()안에 수를 입력하여 갯수를 정할 수 있습니다

randn은 표준정규분포를 만족시키는 난수를 생성하며

rand와 똑같이 갯수를 정할 수 있습니다

randint는 범위 내의 랜덤한 정수 1개를 뽑습니다

실행할 때마다 값이 달라집니다

표준정규분포는 평균이 0이고 표준편차가 1인 분포를 말합니다

그말은 즉, 0을 기준으로 값들이 퍼져있다는 의미입니다

그렇기 때문에 당연히 음수의 값도 존재를 할텐데요

절댓값을 영어로 absolute이기 때문에 줄여서 abs만 사용해서

절댓값을 취해줄 수 있습니다

마지막으로는 간단한 함수들 입니다

제곱이나 제곱근 구하기등이 가능합니다

이 부분을 제가 글을 쓰기 보다는

사진을 보고 이해하시는게 빠를것 같아

글다는 것은 하지 않겠습니다

Numpy의 활용법은 이것보다 무궁무진합니다

한 라이브러리마다 적어도 2개는 포스팅 할 것입니다

다음 포스팅은 Numpy의 다양한 활용에 대해 알아보겠습니다

728x90

'파이썬 > numpy' 카테고리의 다른 글

작업 3 : np.random 메소드 살펴보기  (0) 2022.04.07