>source

매트릭스가 있다고 가정해 보겠습니다.

import numpy as np
A= np.array([[ 1,  2,  3,  4],
              [ 5,  6,  7,  8],
              [ 9, 10, 11, 12],
              [13, 14, 15, 16]])

이 행렬에 가로, 세로 또는 대각선으로 1D 배열이 포함되어 있는지 확인하고 싶습니다. 아래는 내가 생각해 낸 code입니다.

def bingo(a, A):
    return np.max(np.diff(np.argwhere(np.isin(A, a)).T))
a1= np.array([3, 4])
a2= np.array([1, 5, 9])
a3= np.array([5, 10, 15])
a4= np.array([13, 10, 7, 4])
assert bingo(a1, A)== bingo(a2, A)== bingo(a3, A)== bingo(a4, A)== True

그러나 내 code에는 3가지 주요 문제가 있습니다.

  1. 내 code에서와 같이 반대의 경우를 고려하고 싶지 않습니다. 예를 들어,np.array([4, 3, 2, 1])매트릭스에 포함된 것으로 간주되어서는 안 됨.

  2. 배열에 요소가 1개만 포함되어 있으면 code가 작동하지 않습니다. 예를 들어,np.array([1])매트릭스에 포함된 것으로 간주되어야 합니다..

  3. 내 code는 다음과 같은 경우 작동하지 않습니다.중복 요소가 포함되어 있습니다.

누가 이것을 하는 일반적이고 numpyic한 방법을 제안할 수 있습니까?

  • 이전 c# : .NET Core: `[RequiredFromQuery]` 특성이 있는 두 개의 GET 작업은 `경로 '/api/StaticFile'의 'get' 메서드가 여러 번 등록됨`을 제공합니다.
  • 다음 java : List>를 기본 및 보조 방식으로 정렬하시겠습니까?