Вам просто нужно прочитать документацию, чтобы понять почему.
вот документация для numpy .eye
Вот документация для numpy .zeros
краткий ответ: numpy.eye
возвращает знак формы (N, M) , он не может иметь 3 или более измерений!
но numpy.zeros
принимает в качестве входных данных кортеж. он может иметь любую форму с любыми размерами. как 3 измерения или больше!
посмотрите на этот пример:
>>> np.eye(3,3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> np.zeros((2,2,2))
array([[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]])
>>> np.zeros((2,2,2,2))
array([[[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]],
[[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]]])