Numpy를 사용하여 요소 순서에 관계없이 다른 배열에서 동일한 행을 어떻게 찾을 수 있습니까? [복제]

Aug 19 2020

나는 프로젝트를 진행하던 중이 문제를 발견했습니다. (8,3) 및 (2,2) 모양의 두 배열 A와 B가 있습니다. B의 요소 순서에 관계없이 B의 각 행의 요소를 포함하는 A의 모든 행을 어떻게 찾을 수 있습니까?

A = np.random.randint(0,5,(8,3))
B = np.random.randint(0,5,(2,2))

감사!

답변

2 Geom Aug 19 2020 at 06:05

한 가지 방법은 다음과 같습니다.

Import numpy as np

A = np.random.randint(0,5,(8,3))
B = np.random.randint(0,5,(2,2))

C = (A[..., np.newaxis, np.newaxis] == B)
rows = np.where(C.any((3,1)).all(1))[0]
print(rows)

산출:

[0 2 3 4]
2 BrycePaule Aug 19 2020 at 06:14
import numpy as np

A = np.random.randint(0, 5, (8, 3))
B = np.random.randint(0, 5, (2, 2))

for BRow in B:
    for ARow in A:
        if all(item in ARow for item in BRow):
            print(f'{BRow} in {ARow}')

이것은 중복을 확인하지 않습니다. 예를 들어 [3, 3] in [1, 2, 3]