안녕하세요, 오늘 포스팅한 내용은 numpy 함수 중 any, all, where 함수 그리고 numpy 행렬 인덱싱(index)와 슬라이싱에 대한 내용입니다. 수계산에 정말 많이 쓰이는 함수입니다.
1. any, all, where 함수
1) any 함수
: numpy의 내장함수로서, 행렬 값이, 하나라도 조건 값에 부합하면, 참을 출력하는 함수 입니다.
기본 구문은 아래와 같습니다.
-> np.any(조건 값)
===============================================================
import numpy as np
test01 = np.arange(10).reshape(2,5)
np.any(test01> 3)
===============================================================
- 위에 코드를 실행 시켜 보면, 조건(3 보다 큰게 있냐?!) 에, 하나라도, 부합하게 되면, "True"를 출력하는 걸 확인 하실 수 있습니다. (0~9 니까, 3보다 큰 수는 4,5,6,7,8,9 이렇게 있으니까, True 입니다.)
2) all 함수
: numpy의 내장함수로서, 행렬 값이, 모두 조건 값에 부합하면, 참을 출력하는 함수 입니다.
기본 구문은 아래와 같습니다.
-> np.all(조건 값)
===============================================================
import numpy as np
test01 = np.arange(10).reshape(2,5)
np.all(test01>-1)
===============================================================
- 위에 코드를 실행 시켜 보면, 조건(-1 보다 크냐?!) 에 모든 행렬 값이 부합하면, "True"를 출력하는 걸 확인 하실 수 있습니다.
3) where 함수
: numpy의 내장함수로서, 행렬 값이, 조건 값 해당하는 값만 출력을 하는 함수 입니다.
기본 구문은 아래와 같습니다.
-> np.where (조건 값)
====================================================================
import numpy as np
test01 = np.arange(10).reshape(2,5)
np.where(test01 > 5, test01, 0) # 조건에 해당하는 것은 그 값을 출력을 하는거고, 아니면 0으로 출력
np.where(test01 > 5, test01, 1) # 조건에 해당하는 것은 그 값을 출력을 하는거고, 아니면 1으로 출력
np.where(z > 0, z, 0)
====================================================================
- 위에 코드를 실행 시켜 보면, 조건에 해당하는 것은 그 값을 출력을 하는거고, 아니면 0 or 1로 채워 넣어라는 구문이 실행되는 걸 확인 하실 수 있습니다.
2. numpy 행렬 인덱싱(index)와 슬라이싱
: 인덱스로 값을 출력하는 방법과, 슬라이싱을 이용하여 출력하는 방법을 서로 비교하면서 설명 드리도록 하겠습니다.
가장 큰 차이는, 인덱스는 그 한 값을 출력하는것이고, 슬라이싱은 그 범위를 지정하여 출력하는 것입니다.
그리고, 그로 인해, 인덱스는 그 값을 출력하니까, 한 행렬이 줄어든 상태에서, 출력이 되고, 슬라이싱은 줄어들지 않고,
그대로 출력이 됩니다. 아래 예제 구문 참조 부탁 드립니다.
Case #1 인덱싱(index)로 출력하는 방법
====================================================================
import numpy as np
test01 = np.arange(125).reshape(5,5,5)
test01[0] # 인덱싱을 하게 되면 한 차원이 줄은 상태에서, 출력
====================================================================
- 위 코드를 실행 시켜 보면, 아래와 같이, [0] 의 인덱스에 위치해 있는 값이 출력되는 걸 확인 하 실 수 있습니다. 하지만, 행렬이 줄어든 상태에서 출력되는 걸 확인 하실 수 있습니다.
Case #2 슬라이싱으로, 출력하는 방법
====================================================================
import numpy as np
test01 = np.arange(125).reshape(5,5,5)
test01[:] # 슬라이싱은 행렬을 유지하면서 범위 내용을 출력.
====================================================================
- 위 코드를 실행 시켜 보면, 아래와 같이, 전체 행렬을 출력이 되는 걸 알 수 있고, 행렬을 유지되는 것도 확인 하실 수 있습니다.
3. linalg 서브모듈 (np.linalg.inv , np.linalg.solve)
1) np.linalg.inv
: inverse 라는 단어를 보시고, 눈치 채셨겠지만, 역행렬을 구하는 함수입니다. 중학교 때인지, 고등학교 때 인지는 모르겠지만, 그 때 배웠던 그 역행열입니다. 기본 구문은 아래와 같습니다.
-> np.linalg.inv(역행렬 변환하고 싶은 행렬 변수)
더 쉬운 이해를 돕기 위해서, 간단하게, 예문을 통해서 설명드리겠습니다.
============================================================================
import numpy as np
reverse01 = np.random.rand(3,3)
print(np.linalg.inv(reverse01))
============================================================================
위 코드를 실행을 해보면, 아래와 같은 결과를 보실 수 있습니다. 즉, reserse01의 역행렬을 보실 수 있습니다.
2) np.linalg.solve 선형대수식
: 선형대수학이라고 하면, 좀 이질적으로 들리시겠지만, 우리가 중, 고등학교에서 해 구할 때 썼던 공식입니다. 기본 코드는 아래와 같습니다.
-> np.linalg.solve(수식 왼쪽 행렬, 수식 오른쪽 행렬)
위 기본 구문으로는 이해가 안되실 수 있으니까, 아래와 예문을 통해서, 설명 드리도록 하겠습니다. 수학공식으로 표현하면 아래와 같습니다.
============================================================================
import numpy as np
test01 = np.array([[5,3],[1,3]]) # 왼쪽 행렬
test02 = np.array([20,4]) # 오른쪽 행렬
result01 = np.linalg.solve(test01,test02) # 해를 구하는 코드
print (result01)
============================================================================
위 코드를 실행을 해보면, 아래와 같은 결과를 보실 수 있습니다. 즉, x, y의 해를 구해줍니다. 그럼 저희 학창시절에, 여기에서 끝나지 않았죠. 검산을 해보는 거죠. 검산하는 식도 아래 설명 드리겠습니다.
-> 검산하는 코드 : np.allclose(test01@result01,test02)
아래와 같이 해가 정확하게 나왔기 때문에, "True" 값을 출력을 해줍니다.
이상입니다. 이번 포스팅에서는 numpy 함수 중 any, all, where 함수 그리고 numpy 행렬 인덱싱(index)와 슬라이싱에 대한 내용을 다뤄봤습니다. 이것 저것 하는데 복습안하니까 다 까먹더라구요. 중간 중간 틈틈히 복습해야 될 거 같습니다. 그럼 이만 마무리 하도록 하겠습니다. 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > Numpy' 카테고리의 다른 글
Python 파이썬 numpy, matplotlib 모듈로 3D 그래프를 그려보자 (1) | 2021.02.26 |
---|---|
Python 파이썬 numpy, matplotlib 모듈로 그래프를 손쉽게 그려보자 (1) | 2021.02.26 |
Python 파이썬 numpy 함수 행렬간 사칙 연산 (add, substract, multiply, divide) 누적 합계, 평균, 최대값, 조건값의 인덱스 출력 (1) | 2021.02.25 |
Python 파이썬 numpy 함수 Boolean indexing 리스트, 조건 값에 맞춰서 리스트 화 (0) | 2021.02.22 |
Python 파이썬 numpy 함수 empty, full, eye, shape, reshape, linspace, broadcasting (4) | 2021.02.22 |
댓글