배열에서 0이 아닌 요소의 왼쪽 상단 및 오른쪽 하단 인덱스를 가져 오는 함수

V_Buffalo

따라서 목표는 배열의 0이 아닌 요소 그룹의 왼쪽 상단 및 오른쪽 하단 인덱스를 제공하는 함수를 작성하는 것입니다. 두 그룹은 어레이에서 서로 옆에있을 수 없습니다. 그룹이 하나의 요소로만 존재하는 경우 왼쪽 상단과 오른쪽 하단 인덱스는 동일합니다. 0이 아닌 요소의 모든 인덱스를 가져 오는 함수를 얻는 것은 쉬웠지만 필터링 할 수 없어서 왼쪽 상단과 오른쪽 하단 인덱스 만 남았습니다. 이미 얻은 기능은 다음과 같습니다.

import numpy as np
def get_indexes(A):
    M,N = A.shape
    pos = []
    for i in range(M):
        for j in range(N):
            if A[i,j]!=0:
                pos.append((i,j,A[i,j]))
    return pos

다음은 주어진 배열의 예입니다.

A= np.array([[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0],
[6, 6, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 5, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]])

도움을 주셔서 감사합니다!

Shmn

0이 아닌 요소의 왼쪽 상단 인덱스를 찾고 0이 아닌 요소의 오른쪽 하단 인덱스를 얻기 위해 for 루프의 증가하는 순서로 행렬을 탐색했습니다. 여기에 코드 :

import numpy as np

A= np.array([
[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0],
[6, 6, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 5, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]])


def getting_top_left_indexes(A):
    break_condition = False
    M,N = A.shape
    pos = []
    for i in range(M):
        if break_condition == True:
            break
        for j in range(N):
            if A[i,j]!=0:
                pos.append((i,j,A[i,j]))
                break_condition = True
                break
    return pos

def getting_bottom_right_indexes(A):
    break_condition = False
    M,N = A.shape
    pos = []
    for i in range(M-1, 0, -1):
        if break_condition == True:
            break
        for j in range(N-1, 0, -1):
            if A[i,j]!=0:
                pos.append((i,j,A[i,j]))
                break_condition = True
                break
    return pos


top_left_indexes = getting_top_left_indexes(A)
bottom_right_indexes = getting_bottom_right_indexes(A)

편집 : 귀하의 설명에 대한 제 답변을 편집했습니다. 다음은 업데이트 된 코드입니다.

import numpy as np

A= np.array([
[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 9, 0, 0, 0],
[0, 7, 7, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0],
[6, 6, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 5, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]])

def get_indexes(A):
    M,N = A.shape
    pos = []
    for i in range(M):
        for j in range(N):
            if A[i, j] != 0:
                pos.append((i,j,A[i,j]))
    return pos

def filtering_indexes(indexes):
    filtered_list = []
    sorted_indexes = sorted(indexes, key=lambda x: x[-1])
    top_left_index = sorted_indexes[0]
    for i in range(0, len(sorted_indexes)):
        if sorted_indexes[i][2] == top_left_index[2]:
            pass
        else:
            filtered_list.append(sorted_indexes[i-1])
            top_left_index = sorted_indexes[i]
            filtered_list.append(top_left_index)

    if sorted_indexes[i][2] == top_left_index[2]:
        filtered_list.append(sorted_indexes[i])
    return filtered_list

indexes = get_indexes(A)
filtered_indexes = filtering_indexes(indexes)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이미지의 상단, 오른쪽, 하단 및 왼쪽에 텍스트를 정렬 하시겠습니까?

분류에서Dev

인덱스 및 CRUD 페이지의 레이아웃은 Symfony 프레임 워크를 사용하는 Easyadmin에서 왼쪽에서 오른쪽이 아닌 오른쪽에서 왼쪽입니다.

분류에서Dev

왼쪽 및 오른쪽 화살표가있는 이미지의 간단한 페이드 인 및 아웃

분류에서Dev

왼쪽 및 오른쪽 화살표가있는 이미지의 간단한 페이드 인 및 아웃

분류에서Dev

여백 축소가 상단 및 하단에만 적용되고 왼쪽 및 오른쪽에는 적용되지 않는 이유

분류에서Dev

이미지 위에 아이콘 컨테이너 배치-왼쪽 상단 및 오른쪽 상단

분류에서Dev

CustomClipper (ClipPath)를 왼쪽 상단이 아닌 오른쪽 상단에서 시작하려면 어떻게해야합니까?

분류에서Dev

키워드의 왼쪽과 오른쪽에있는 문자열에서 몇 단어를 가져옵니다.

분류에서Dev

CSS 반응 형 부동 소수점 왼쪽 및 오른쪽 (상단에있는 div 변경)?

분류에서Dev

문자열에서 연산자를 찾고 왼쪽 및 오른쪽 단어를 가져옵니다.

분류에서Dev

PowerPoint의 텍스트에 위쪽 및 아래쪽 테두리를 추가하는 방법 (오른쪽 및 왼쪽 테두리 없음)

분류에서Dev

컨테이너 내부에서 왼쪽 상단에서 오른쪽 하단으로 요소를 애니메이션하는 방법은 무엇입니까?

분류에서Dev

드래그되는 요소의 상단 / 왼쪽 좌표 가져 오기 (포인터 아님)

분류에서Dev

드래그되는 요소의 상단 / 왼쪽 좌표 가져 오기 (포인터 아님)

분류에서Dev

JS + CSS 배열의 이미지를 오른쪽 위에서 왼쪽 아래로 표시하는 방법

분류에서Dev

LINQ를 사용하여 폴리 라인 컬렉션을 바인딩하는 왼쪽 상단 및 오른쪽 하단 지점 가져 오기

분류에서Dev

LINQ를 사용하여 폴리 라인 컬렉션을 바인딩하는 왼쪽 상단 및 오른쪽 하단 지점 가져 오기

분류에서Dev

각각 두 개의 변환 함수를 사용하는 왼쪽 및 오른쪽 케이스 모두를 변환 / 매핑하는 함수가 있습니까?

분류에서Dev

메뉴 아이콘 옆의 오른쪽과 왼쪽에 요소가있는 부트 스트랩 탐색 모음

분류에서Dev

스크롤링 센터 DIV로 고정 된 상단, 왼쪽 및 오른쪽 DIV가있는 HTML CSS DIV 레이아웃

분류에서Dev

테이블 3 개를 왼쪽 상단에, 두 번째 테이블을 그 아래 (왼쪽), 세 번째 테이블을 오른쪽 상단에 놓습니다.

분류에서Dev

요소의 맨 왼쪽 및 맨 오른쪽 10px에 마우스를 가져가시겠습니까?

분류에서Dev

Xamarin froms Forms 가로 목록보기 (날짜를 오른쪽, 왼쪽으로 이동하는 단추 포함)

분류에서Dev

위치를 막을 수있는 것 : 상대; 왼쪽 : 0; 오른쪽 : 200px; 요소의 너비에 영향을 미치는가?

분류에서Dev

FFMPEG를 사용하여 오른쪽에서 왼쪽으로 단일 이미지 전환 및 끝에서 중지

분류에서Dev

배열의 오른쪽과 왼쪽에있는 더 큰 요소를 계산하는 가장 좋은 방법

분류에서Dev

Sublime에서 인터페이스의 왼쪽 상단에서 왼쪽 / 오른쪽 화살표 버튼은 무엇을합니까?

분류에서Dev

데스크톱 화면의 상단, 하단, 오른쪽 및 왼쪽의 빈 공간을 수정하려면 어떻게해야합니까?

분류에서Dev

구조 해제 할당의 오른쪽이 왼쪽 부분의 인덱스 증가를 무시하는 이유

Related 관련 기사

  1. 1

    이미지의 상단, 오른쪽, 하단 및 왼쪽에 텍스트를 정렬 하시겠습니까?

  2. 2

    인덱스 및 CRUD 페이지의 레이아웃은 Symfony 프레임 워크를 사용하는 Easyadmin에서 왼쪽에서 오른쪽이 아닌 오른쪽에서 왼쪽입니다.

  3. 3

    왼쪽 및 오른쪽 화살표가있는 이미지의 간단한 페이드 인 및 아웃

  4. 4

    왼쪽 및 오른쪽 화살표가있는 이미지의 간단한 페이드 인 및 아웃

  5. 5

    여백 축소가 상단 및 하단에만 적용되고 왼쪽 및 오른쪽에는 적용되지 않는 이유

  6. 6

    이미지 위에 아이콘 컨테이너 배치-왼쪽 상단 및 오른쪽 상단

  7. 7

    CustomClipper (ClipPath)를 왼쪽 상단이 아닌 오른쪽 상단에서 시작하려면 어떻게해야합니까?

  8. 8

    키워드의 왼쪽과 오른쪽에있는 문자열에서 몇 단어를 가져옵니다.

  9. 9

    CSS 반응 형 부동 소수점 왼쪽 및 오른쪽 (상단에있는 div 변경)?

  10. 10

    문자열에서 연산자를 찾고 왼쪽 및 오른쪽 단어를 가져옵니다.

  11. 11

    PowerPoint의 텍스트에 위쪽 및 아래쪽 테두리를 추가하는 방법 (오른쪽 및 왼쪽 테두리 없음)

  12. 12

    컨테이너 내부에서 왼쪽 상단에서 오른쪽 하단으로 요소를 애니메이션하는 방법은 무엇입니까?

  13. 13

    드래그되는 요소의 상단 / 왼쪽 좌표 가져 오기 (포인터 아님)

  14. 14

    드래그되는 요소의 상단 / 왼쪽 좌표 가져 오기 (포인터 아님)

  15. 15

    JS + CSS 배열의 이미지를 오른쪽 위에서 왼쪽 아래로 표시하는 방법

  16. 16

    LINQ를 사용하여 폴리 라인 컬렉션을 바인딩하는 왼쪽 상단 및 오른쪽 하단 지점 가져 오기

  17. 17

    LINQ를 사용하여 폴리 라인 컬렉션을 바인딩하는 왼쪽 상단 및 오른쪽 하단 지점 가져 오기

  18. 18

    각각 두 개의 변환 함수를 사용하는 왼쪽 및 오른쪽 케이스 모두를 변환 / 매핑하는 함수가 있습니까?

  19. 19

    메뉴 아이콘 옆의 오른쪽과 왼쪽에 요소가있는 부트 스트랩 탐색 모음

  20. 20

    스크롤링 센터 DIV로 고정 된 상단, 왼쪽 및 오른쪽 DIV가있는 HTML CSS DIV 레이아웃

  21. 21

    테이블 3 개를 왼쪽 상단에, 두 번째 테이블을 그 아래 (왼쪽), 세 번째 테이블을 오른쪽 상단에 놓습니다.

  22. 22

    요소의 맨 왼쪽 및 맨 오른쪽 10px에 마우스를 가져가시겠습니까?

  23. 23

    Xamarin froms Forms 가로 목록보기 (날짜를 오른쪽, 왼쪽으로 이동하는 단추 포함)

  24. 24

    위치를 막을 수있는 것 : 상대; 왼쪽 : 0; 오른쪽 : 200px; 요소의 너비에 영향을 미치는가?

  25. 25

    FFMPEG를 사용하여 오른쪽에서 왼쪽으로 단일 이미지 전환 및 끝에서 중지

  26. 26

    배열의 오른쪽과 왼쪽에있는 더 큰 요소를 계산하는 가장 좋은 방법

  27. 27

    Sublime에서 인터페이스의 왼쪽 상단에서 왼쪽 / 오른쪽 화살표 버튼은 무엇을합니까?

  28. 28

    데스크톱 화면의 상단, 하단, 오른쪽 및 왼쪽의 빈 공간을 수정하려면 어떻게해야합니까?

  29. 29

    구조 해제 할당의 오른쪽이 왼쪽 부분의 인덱스 증가를 무시하는 이유

뜨겁다태그

보관