인덱스 배열과 슬라이스 조합에 문제가 있습니다. 이미지 (A)와 위치 / 인덱스 (pos)가있는 벡터가 있습니다. 이제 다른 위치에서 A에서 슬라이스 (여기서는 3x)를 선택하고 싶습니다. 위치 배열을 반복하는 대신 인덱서 함수 (o1)를 사용하려고했지만 작동하지 않습니다. 마지막으로 모든 슬라이스는 하나의 배열 (o2)에 있어야합니다. 이 문제로 나를 도울 수 있습니까?
A = np.array([[0,0,0,0,0,0,3,3],
[0,0,0,0,0,0,3,3],
[0,0,0,1,1,0,0,0],
[0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,2,2],
[0,0,0,0,0,0,2,2],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]])
# positions to select
# EDIT:
# pos = np.array([[2,6,7],
# [3,4,0]])
pos = np.array([[2,4,0],
[3,6,6]])
# array with all selections
o1 = np.zeros((3,2,2)).astype(np.int)
# EDIT:
#o1 = A[pos[0]:pos[0]+1,pos[1]:pos[1]+1] ## this gives just one of the values in one area
o1 = A[pos[0]:pos[0] + 2,pos[1]:pos[1] + 2]
print(o1.shape)
print(o1)
# model result
o2 = np.array([[[1,1],[1,1]],[[2,2],[2,2]],[[3,3],[3,3]]])
print(o2.shape)
print(o2)
다른 예 : 다음 줄을 사용하여 영역을 얻습니다. 위치 [2,3]에서 시작하여 다음 두 행과 열을 선택합니다.
print( A[pos[0,0] : pos[0,0] + 2 , pos[1,0] : pos[1,0] + 2] )
이것을 여러 위치 쌍 (전체 배열 pos []에 걸쳐)으로 확장 할 수 없습니까?
scikit's sliding window utility
시작 인덱스가 주어지면 이러한 창을 pos
매우 간단 하게 추출 하는 데 사용할 수 있습니다.
from skimage.util.shape import view_as_windows
out = view_as_windows(A, (2,2))[pos[0], pos[1]]
샘플 실행-
In [225]: A
Out[225]:
array([[0, 0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 1, 1, 0, 0, 0],
[0, 0, 0, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 2, 2],
[0, 0, 0, 0, 0, 0, 2, 2],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
In [226]: pos = np.array([[2,4,0],[3,6,6]])
In [227]: from skimage.util.shape import view_as_windows
In [228]: view_as_windows(A, (2,2))[pos[0], pos[1]]
Out[228]:
array([[[1, 1],
[1, 1]],
[[2, 2],
[2, 2]],
[[3, 3],
[3, 3]]])
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다