다른 2D 배열에서 발생하는 2D numpy 배열의 인덱스를 찾는 방법 [중복]
Nov 25 2020
두 개의 2d numpy 배열이 있고 한 배열이 다른 배열에서 발생하는 위치를 찾고 싶습니다.
big_array = np.array([[1., 2., 1.2], [5., 3., 0.12], [-1., 14., 0.], [-9., 0., 13.]])
small_array= np.array([[5., 3., 0.12], [-9., 0., 13.]])
그런 다음의 big_array
모든 행과 동일한 행의 인덱스를 얻고 싶습니다 small_array
. np.in1d
2D 배열 과 같은 일 을 하고 싶습니다 . 내 말은 내가 갖고 싶어요 :
result= [1, 3]
이미 다음 코드를 시도했지만 성공하지 못했습니다.
result=[([any(i == big_array ) for i in small_array])]
미리 도움을 주시면 감사하겠습니다.
답변
1 Djib2011 Nov 25 2020 at 08:56
당신이 원하는 것은 :
sum([row in small_array for row in big_array])
예:
import numpy as np
big_array = np.array([[1., 2., 1.2], [5., 3., 0.12], [-1., 14., 0.], [-9., 0., 13.]])
small_array= np.array([[5., 3., 0.12], [-1., 14., 0.]])
result = sum([row in small_array for row in big_array])
print(result)
2
수정 (설명 후) :
파이썬 솔루션 :
[i for i, brow in enumerate(big_array) for srow in small_array if all(srow == brow)]
예:
big_array = np.array([[1., 2., 1.2], [5., 3., 0.12], [-1., 14., 0.], [-9., 0., 13.]])
small_array= np.array([[5., 3., 0.12], [-1., 14., 0.]])
result = [i for i, brow in enumerate(big_array) for srow in small_array if all(srow == brow)]
print(result)
[1, 2]
참고 :을 사용하여 더 나은 작업을 수행 할 수 np.where
있습니다. 거대한 배열이 있으면 찾아보아야합니다.