मैंने सरणी को फिर से आकार दिया और फिर इसके माध्यम से पुनरावृत्त किया। दुर्भाग्य से, मेरा उत्तर मानता है कि आपके पास कम से कम तीन आयाम हैं और सामान्य मैट्रिक्स के लिए त्रुटि होगी, आपको 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)योग से अधिक सुरक्षित नहीं होगा ? योग परीक्षण केवल तभी सही होता है जब सभी संख्याएं सकारात्मक होती हैं।