Вы, конечно, можете легко векторизовать самый внутренний цикл с помощью (не проверено):
for i in range(N):
for j in range(i):
assert all(D[i,j] <= D[i,:] + D[:,j])
Для двойной векторизации вы можете просмотреть k
(также не проверено):
for k in range(N):
row = D[k,:].reshape(1, N)
col = D[:,k].reshape(N, 1)
assert all(D <= row + col)
(row + col
генерирует квадратную матрицу того же размера, что и D
)