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