Просмотрев страницы руководства для numpy eye и identity, я Предполагалось, что identity является частным случаем eye, так как он имеет меньше опций (например, eye может заполнять сдвинутые диагонали, identity не может), но может быть правдоподобно работать быстрее. Однако это не относится ни к малым, ни к большим массивам:
>>> np.identity(3)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> np.eye(3)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> timeit.timeit("import numpy; numpy.identity(3)", number = 10000)
0.05699801445007324
>>> timeit.timeit("import numpy; numpy.eye(3)", number = 10000)
0.03787708282470703
>>> timeit.timeit("import numpy", number = 10000)
0.00960087776184082
>>> timeit.timeit("import numpy; numpy.identity(1000)", number = 10000)
11.379066944122314
>>> timeit.timeit("import numpy; numpy.eye(1000)", number = 10000)
11.247124910354614
В чем же преимущество использования identity над eye?