if not np.isnan(A[A.shape[0] // 2, 0]):
    return [rect for part in np.split(A, 2, axis=0) for rect in recurse(part)]
elif not np.isnan(A[A.shape[0] // 2, 0]):
    return [rect for part in np.split(A, 2, axis=0) for rect in recurse(part)]
if not np.isnan(A[0, A.shape[1] // 2]):
    pass
Numpy - разбить 2D-массив на подмассивы на основе индексов