【发布时间】:2015-04-06 10:59:48
【问题描述】:
查看了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
那么,与eye 相比,使用identity 的优势是什么?
【问题讨论】:
标签: python arrays performance numpy