고유 열이 있는 배열의 모든 행에 대한 최소값 찾기

그로텍소

각 최소값이 고유한 열에서 파생되어야 하는 배열에서 행별 최소값을 찾아야 합니다.

np.min(arr, axis=1) 행별 최소값을 제공하지만 동일한 열을 여러 번 포함할 수 있습니다.

예를 들면 다음과 같습니다.

a = np.array([
    [4, 5, 6],
    [1, 2, 3],
    [7, 8, 9]
])

np.min(a, axis=1) 출력할 것입니다: [4, 1, 7]

반환된 모든 최소값은 첫 번째 열에서 유래하지만 각 열을 한 번만 사용할 수 있다는 제약 조건에서 원하는 출력은 [5, 1, 9]가장 최적의 할당이 됩니다.

1은 이 예에서 가장 낮은 값이므로 첫 번째 열에 할당됩니다. 5는 두 번째 열에 할당할 수 있는 최상의 최소값입니다(두 번째 행이 이미 사용되었기 때문에).

내가 지금 가지고 있는 유일한 아이디어는 일종의 재귀를 사용하여 이것을 구현하는 것입니다.

우드포드

찾고 있는 것은 각 값에 대한 행 및 열 인덱스가 고유한 N개의 최소값인 것으로 보입니다(NxN 행렬 가정). 초기 좌표로 행렬의 각 값에 태그를 지정하면 어디서 왔는지 알 수 있는 능력을 잃지 않고 재정렬할 수 있습니다. 에서 사용자 정의 키로 정렬하는 매끄러운 방법이 있는지 확실 numpy하지 않으므로 재귀 또는 역추적이 필요하지 않은 바닐라 Python 솔루션이 있습니다.

def idx_matrix(matrix):
    # return 1-D array of matrix values in (row_idx, col_idx, val) format
    return [(r, c, val) for r, row in enumerate(matrix)
                        for c, val in enumerate(row)]

def find_minima(indexed_vals, limit=0):
    # return array of indexed matrix values whose row and col indexes are unique
    minima = []
    rows = set()
    cols = set()
    for row, col, val in indexed_vals:
        if row not in rows and col not in cols:
            minima.append((row, col, val))
            if limit and len(minima) == limit:
                # optional optimization if you want to break off early
                # after you've found a value for every row
                break
            rows.add(row)
            cols.add(col)
    return minima

def sort_by_val(indexed_vals):
    # return indexed_vals sorted by original matrix value
    return sorted(indexed_vals, key=lambda x: x[2])

def sort_by_row(indexed_vals):
    # return indexed_vals sorted by row index
    return sorted(indexed_vals, key=lambda x: x[0])

def strip_indices(indexed_vals):
    # return a 1-D array with row and col index removed
    return [v[2] for v in indexed_vals]

def find_minima_by_row(matrix):
    # put it all together
    indexed = idx_matrix(matrix)
    indexed = sort_by_val(indexed)
    minima = find_minima(indexed)
    minima = sort_by_row(minima)
    return strip_indices(minima)

matrix = [[4, 5, 6],
          [1, 2, 3],
          [7, 8, 9]]
results = find_minima_by_row(matrix)
print(f'{results=}')

matrix = [[20, 17,  5, 13, 19],
          [11, 22,  8,  4,  9],
          [ 0, 10,  2, 16, 23],
          [ 1, 24, 21, 15, 14],
          [ 3, 12,  6,  7, 18]]
results = find_minima_by_row(matrix)
print(f'{results=}')
results=[5, 1, 9]
results=[5, 4, 0, 14, 12]

이것은 내 워크스테이션에서 2000x2000 매트릭스로 ~4초 안에 실행되었습니다. 공간을 좀 더 효율적으로 만들기 위해 제자리에서 정렬을 수행할 수 있습니다.

또한 입력에 반복되는 값이 있으면 이것이 작동하지 않을 이유가 없습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

두 열의 고유 한 조합이있는 모든 행 찾기

데이터 프레임의 모든 열에 대한 고유 한 값 찾기

pandas.DataFrame의 모든 레이블에 대한 모든 열의 최소값과 최대값 찾기

Pandas 데이터 프레임에서 ID로 그룹화 된 모든 열의 각 고유 값에 대한 최소값을 찾는 방법

SQL에서 각 열 이름을 나열하지 않고 모든 열에서 최소 최대 값 찾기

모든 관찰에 대해 다른 조건이있는 열의 최소값 찾기

csv 파일에있는 모든 열의 최대 길이 찾기

배열의 모든 고유 값에 대해 두 배열에있는 동일한 값의 개수

postgresql 한 열에 최대 값이있는 모든 행 선택

2 차원 배열의 모든 열에 대한 최대 값을 찾는 데 문제가 있습니다.

주어진 배열의 모든 창 크기에 대해 최소값의 최대값 찾기

Pandas의 모든 열에 대한 각 고유 값의 백분율 찾기

Bash의 첫 번째 열에있는 각 고유 값에 대한 n 번째 열의 최대 값 찾기

R-배열 차원에서 고유 한 최소값 찾기

모든 배열 기반 행에 대해 고유한 요소 가져오기

모든 키-값 쌍이 고유 한 개체 배열에서 개체 찾기

배열에서 모든 고유 요소의 위치 찾기

배열의 모든 고유 요소에 대한 부울 마스크 만들기

모든 어린이에 대한 필드의 최고 값과 최저값 찾기

데이터 프레임에있는 다른 열의 고유 한 값을 기반으로 한 열의 모든 조합 찾기

열에 대한 특정 값이있는 모든 행에서 고유 한 값을 선택합니다.

대규모 데이터 세트에서 고유 한 소수 열 값의 최신 날짜 및 시간으로 행 찾기

2D 배열 C ++에서 모든 행의 최대 값 찾기

배열의 모든 값에 대해 찾기 쿼리 실행

파이썬 찾기 min. 2D 배열의 모든 열에 있는 값

각 행에서 가능한 모든 순열을 고려하여 셀형 배열의 고유 한 행 찾기

모든 열과 행의 고유 한 값 세트에 대한 SPARQL

C에서 배열의 모든 5 개 요소의 최대 값을 어떻게 찾을 수 있습니까?

각 행에 여러 값이있는 Pandas 열에서 고유 한 값 찾기

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관