이 질문의 제목은 어떻게해야 할 지 모르겠습니다. 하지만 경계 밖으로 값의 일부를 가질 수없는 배열을 어떻게 얻을 수 있습니까?numpy 배열의 범위를 벗어난 부분을 채우십시오.
은 아래에있는 내 간단한 예제 코드를 참조하십시오 :
def get_section(a, center, square_radius):
return a[center[0] - square_radius:center[0] + square_radius + 1, \
center[1] - square_radius:center[1] + square_radius + 1]
array = [
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 3, 4, 5, 6, 7, 8, 9, 1],
[3, 4, 5, 0, 7, 8, 9, 1, 2],
[4, 5, 6, 7, 8, 9, 1, 2, 3],
[5, 0, 7, 8, 9, 4, 5, 6, 7],
[6, 7, 8, 9, 1, 2, 3, 4, 5]
]
a = np.asarray(array)
square_radius = 2
center = [2,3]
print(get_section(a, center, square_radius))
center = [4,1]
print(get_section(a, center, square_radius))
내가 배열을 가지고 말을하지만, 나는 중심과 내가 원하는 부분의 반경을 지정하여, 그것의 작은 부분을 좀하고 싶습니다 .
첫 번째 인쇄됩니다
[[2 3 4 5 6]
[3 4 5 6 7]
[4 5 0 7 8]
[5 6 7 8 9]
[0 7 8 9 4]]
을 내가 원하는 정확히 어느. 간단히하기 위해, 나는 식별 된 2 개의 예 가운데에 '0'을 두었다.
그러나 두 번째는 내가 -1 외부 값을 입력하고자하는 두 번째의 경우[]
을 인쇄합니다. 따라서 반환하겠습니다.
[[-1 3 4 5 0]
[-1 4 5 6 7]
[-1 5 0 7 8]
[-1 6 7 8 9]
[-1 -1 -1 -1 -1]]
numpy로 어떻게 할 수 있습니까?
네, 어떻게 작동하는지 이해하려고합니다. 힘든 시간을 보내고. np.pad에 대한 정보를 읽었고 왼쪽/오른쪽 및 위쪽/아래쪽을 패드하는 방법을 얻었습니다. 하지만, 'a'는 np.pad 기능 전후에 'a'를 인쇄 할 때 바뀌지 않는 것 같습니다. 나는 왜 tp와 lp를 추가하는 것이 트릭을하는지 이해하지 못한다. 나는 그것이 효과가 있고, 이해하려고 노력한다는 것을 압니다. 감사합니다 – user1179317
@ user1179317 설명을 추가했습니다. –
나는 그것을 얻었다 고 생각한다. 반환되는 값이 원래 배열의 경계 내에있는 값이므로 패딩이 해당 섹션에 추가되므로 거의 생각할 수 있습니다. 코드를 따라갈 때 패딩이 추가 된 것처럼 보이기 때문에 조금 혼란 스럽지만 추가 패딩을 무시하고 값을 반환하기 만합니다. – user1179317