Ваш исходный цикл не может быть преобразован в понимание списка, потому что он не назначает все элементы матрицы-пустышки.Понимание списка всегда создает полный список (или список списков).
Если ваша цель состоит в том, чтобы заполнить не назначенные элементы нулями, то соответствующее понимание списка может выглядеть примерно так:
[ [ [0,0,numpy.sum(y_network[a, b, :])] for b in range(2)] for a in range(5)]
Разница в том, что каждый уровень понимания создает список, который сам использует понимание для своих элементов.
Обратите внимание, что это не совсем то же самое, потому что значение numpy.sum(y_network[a, b, :])
всегда помещается в последний элемент 3-го измерения вместо индекса b
.Вы могли бы использовать еще немного кода для заполнения нулями влево и вправо, но это сделает его сложным и нечитаемым, что в значительной степени сведет на нет цель использования понимания списка.
Вы также можете написать один цикл для назначения:
for b in range(2): yl[:,b,b] = np.sum(network[:,b,:],1)