본문 바로가기

TIL

TIL 0712233

https://mellowlee.tistory.com/entry/numpy-npisin-npwhere-index-%EC%B0%BE%EC%95%84%EB%B3%B4%EA%B8%B0

 

[numpy] np.isin(), np.where() index 찾아보기

github np.isin() 내가 찾는게 있는지 여부를 각 index 위치에 True, False 형태로 알려줌 1,4,6,10이 포함되어 있는지를 찾고 싶을때 사용한다. from numpy import ndarray import numpy as np datas = np.asarray([1,2,3,4,5,6,7])

mellowlee.tistory.com

https://kjk92.tistory.com/19

 

[numpy]파이썬 numpy array index 찾기(numpy.where)

안녕하세요.. 벌써 올해도 한달하고도 10일도 채 남지 않았네요..! 저도 뭐한지 모르게 벌써 올해가 다 지나가버렸어요ㅠㅠ deep learning을 하면서 numpy array를 쓰게되네요! list와 비슷하면서도 다르

kjk92.tistory.com

https://blog.naver.com/PostView.nhn?blogId=song_gina&logNo=221763499607 

 

Python Numpy 기초. 행렬/배열 만드는 함수, 인덱스 호출, 3차원 행렬, 연산

python 에서 기본 자료구조 + 연산자 +제어문 + 함수 까지 마무리 했으니 이제 Numpy 정리할 시간 <Nu...

blog.naver.com

numpy로 행렬을 다룰 때 특정 값의 위치를 얻고 싶어서 검색해보고 where을 찾아냈다.

numpy의 array로 리스트의 리스트를 행렬처럼 만들어서 matrix에 담아줬다.

matrix.where(1)로 값이 1인 요소의 위치를 얻으려고 했는데 0부터 시작해서 3행 2열에 있는 1은 그냥 3이라고 답해줬다.

아, 그냥 print(matrix.where(1))을 하면 여러 값들이 다 나온다. matrix.where(1)[0]을 프린트해야 숫자값만 나온다.

3행 2열, 3행 3열에 이렇게 1이 2개 있을 때는 [3, 3]이라고 나왔다.

6 x 6 전체에 1이 있을 때는 [0 0 0 0 0 0 1 1 1 1 1 1 ... 5 5 5 5 5 5] 이렇게 나왔다.

결과적으로 다른 방법을 찾아보기로 했다.

내가 원하는건 아니었지만 where(조건, 참일 때 값, 거짓일 때 값) 이렇게 사용해서 행렬을 바꿀 때 쓰면 유용할 것 같다.


https://yngie-c.github.io/numpy/2021/03/02/numpy_indexing_slicing/

 

Numpy (2) - 인덱싱(Indexing)과 슬라이싱(Slicing) · Data Science

이번 포스팅의 내용은 파이썬 라이브러리를 활용한 데이터 분석(2판) 의 내용을 참조하여 작성하였습니다. Indexing and Slicing 이번 게시물에서는 ndarray 의 요소를 조작하기 위한 인덱싱과 슬라이싱

yngie-c.github.io

슬라이싱으로 한꺼번에 1 주변 값들을 바꾸려고 했는데 주변 값들이 바뀌면서 다음 동작을 실행할 때 영향이 가서 원하는대로 동작이 되지 않았다.

지금 다시 생각해보니 1의 인덱스를 찾아서 담아두는 동작과 슬라이싱으로 값을 바꾸는 동작을 따로 만들었었다면 이걸 응용해서 더 쉽게 풀 수 있었을 것 같다.


https://runebook.dev/ko/docs/numpy/reference/generated/numpy.count_nonzero

 

numpy.count_nonzero - numpy.countnonzero 함수는 배열 또는 행렬에서 0이 아닌 값의 개수를 계산합니다.

numpy.countnonzero 함수는 배열 또는 행렬에서 0이 아닌 값의 개수를 계산합니다.이 함수는 행렬의 희소성을 확인하거나 행렬에서 0이 아닌 요소의 위치를 식별하는 데 사용할 수 있습니다.행렬이 너

runebook.dev

0, 1과 구분하기 위해서 2로 위험지대를 바꿔주고 안전지대는 전체-nonzero로 구했다.


if문을 8개 써서 풀고 제출한 후 다른 사람의 풀이를 보니 중복을 제거할 수 있는 set()을 이용해서 이미 위험지대가 된 좌표를 중복되지 않게 만드는 풀이가 있었다.

min과 max를 이용해서 행렬의 범위를 벗어나지 않도록 제한한 풀이도 있었다.

'TIL' 카테고리의 다른 글

TIL 071423  (0) 2023.07.14
TIL 071323  (0) 2023.07.13
TIL 071123  (0) 2023.07.13
TIL 071023  (0) 2023.07.11
TIL 070723  (0) 2023.07.07