x, y 좌표의 가운데에 0의 블록을 표시하려면 크기가 홀수 여야합니다. 이 반면
import numpy
a = numpy.ones((10,10))
x,y = 4,6
s = 2
a[x - s: x + s, y-s: y + s] = 0
array([[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 1., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 1., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 1., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
: 예를 들어, 다음의 0의 블록 Y는 4,6 =하지만 중심에서 해당 셀의 좌표 즉, X, Y = 4.5, 5.5, 좌표 (X)을 중심으로되지 하나는 다음과 같습니다 :
a = numpy.ones((10,10))
x,y = 4,6
s = 2
a[x - s: x + s + 1, y-s: y + s + 1] = 0
print a
array([[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 0., 0., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
스크립트가 픽셀 기반 이미지 처리를위한 것이라면 이는 중요한 차이 일 수 있습니다.
감사합니다.이 시도하고 다음 오류가 발생합니다; TypeError : 목록을 연결할 수 있습니다 ("int"가 아님) –
x와 y는 무엇입니까? 왼쪽/위 모서리 인덱스를 나타내는 정수라고 가정 했습니까? 이미 x와 y가 beg/end index를 가지고 있다면'array [x [0] : x [1] + 1, y [0] : y [1] +1]'과 같은 것이 필요합니다. 또한 다른 답변이 지적한대로, 위의 솔루션은 10x10 하위 배열을 캡처합니다. – yosukesabai