나는 배열을 재구성 한 다음 반복했습니다. 불행히도, 내 대답은 적어도 3 차원이 있다고 가정하고 일반 행렬에 대해 오류가 발생한다고 가정하면 1 차원 및 2 차원 모양 배열에 대한 특수 절을 추가해야합니다. 또한 속도가 느려서 더 나은 솔루션이있을 수 있습니다.
x = np.array(
[
[
[0 , 1, 1, 0],
[0 , 2, 3, 0],
[0 , 4, 5, 0]
],
[
[0 , 6, 7, 0],
[0 , 7, 8, 0],
[0 , 9, 5, 0]
]
])
xx = np.array(
[
[
[0 , 0, 0, 0],
[0 , 2, 3, 0],
[0 , 0, 0, 0]
],
[
[0 , 0, 0, 0],
[0 , 7, 8, 0],
[0 , 0, 0, 0]
]
])
def check_edges(x):
idx = x.shape
chunk = np.prod(idx[:-2])
x = x.reshape((chunk*idx[-2], idx[-1]))
for block in range(chunk):
z = x[block*idx[-2]:(block+1)*idx[-2], :]
if not np.all(z[:, 0] == 0):
return False
if not np.all(z[:, -1] == 0):
return False
if not np.all(z[0, :] == 0):
return False
if not np.all(z[-1, :] == 0):
return False
return True
어떤 생산
>>> False
>>> True
기본적으로 모든 치수를 서로 쌓은 다음 가장자리를 확인하기 위해 치수를 살펴 봅니다.
np.all (x[:, 0] == 0)
합계보다 안전 하지 않습니까? 합계 테스트는 모든 숫자가 양수인 경우에만 정확합니다.