2024. 1. 5. 02:44ㆍNumpy
이 내용은 1월 3일에 공부한 내용인데,, github에만 코드를 올리고 여기에서 리마인드 한다는 느낌으로 중요하다고 생각되는 부분, 조금 헷갈렸던 부분, 학부 시절에 프로젝트 할 때 ' 어?? 이거 어떻게 했더라?' 하고 구글링 했던 부분들을 중심으로 다시 정리했습니다. 전체적인 코드는 저의 github에서 보실 수 있습니다.
https://github.com/ghkstod/TIL/tree/main/ipynb
1.np.arange()
Numpy에서 정말 기본적으로 array를 만들 수 있는 방법, 범위를 지정해서 array를 만들고 저장하는 매서드
정말 기본중에 기본이지만 여기에 쓰는 이유는 가끔씩 헷갈리는 적이 있었기 때문입니다,,
예전에 만들때도 r을 하나 더 써서 arrange라고 해서 에러를 내거나, 손코딩 시험을 치룰 때도 무의식적으로 arrange라고 써서 감점을 받기도 한 기억이 있습니다.
사용방법은 np.arange(start,end,step) 입니다.
start는 시작값으로 array의 처음 값을 지정해주고 default값은 0입니다. end는 끝 값 필수로 넣어줘야하는 값입니다., 그리고 step은 값들을 얼마나 spacing 할 지 결정하며 default값은 1입니다.
import numpy as np
arr1=np.arange(10)
2. 인덱싱과 슬리이싱
Numpy의 개념에서는 배열의 수준에 있지만 Pandas의 DataFrame의 개념으로 간다면 여기서 배우는 인덱싱과 슬라이싱은 매우 중요하다고 생각됩니다. 실제로 프로젝트 할 때도 많이 응용해서 사용을 하는 편입니다.
arr1=np.array([10,20,30,40,50])
위와 같은 배열이 존재할 때, 배열의 인덱스 값은 0부터 부여됩니다. 그렇기 때문에 30을 접근하고자 한다면 3이 아닌 2로 접근해야 합니다.
arr1[2]
마찬가지로 2차원 배열일 경우에도 인덱스 값은 0부터 주어지며 [row,col]의 순서로 접근을 하면 됩니다.
arr2=np.arange(10,106,5).reshape(4,5)
위와 같은 배열에서 45에 접근하고자 한다면 아래와 같이 접근이 가능합니다.
arr2[1,2]
그리고 가장 중요한 것은 조건문을 통해 원하는 인자만 추출하는 것입니다. 배열에서도 조건문 사용이 가능한데 위에서 arr1이라는 배열에서 30이상의 값만 추출하고 싶다면 다음과 같이 나타낼 수 있습니다.
arr1[arr1>=30]
3. Numpy 조건문
Numpy 에서 조건문을 만들 수 있는 매서드를 제공합니다. where 과 select 가 있습니다. 두 조건문을 이용해서 특정값을 수정하는 것이 가능합니다.
np.where는 np.where(조건,True조건일 때 실행, False조건일 때 실행)으로 작성하게 됩니다.
np.select는 조건문 리스트와 선택 리스트로 나누어서 작성합니다. 조건문 리스트는 원하는 조건들을 넣고, 선택 리스트는 해당 조건이 만족할 때 바꾸고자 하는 연산 값 또는 값을 넣으면 됩니다.
Numpy 같은 경우 굉장히 오래전에 배웠기도 했고 처음 볼 때 그래도 어느정도는 다 알지 라는 생각으로 리마인드를 시작했는데 np.where 과 np.select같은 경우는 들어보긴 했는데 사용을 하라고 하면 못할거 같은게 보여서 배우면서도 많이 부족하다는 것을 깨달은,, 그런 느낌이었습니다.