使用numpy.Identity比numpy.ye有什么好处?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (54)

numpyeyeidentity,我以为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?

提问于
用户回答回答于

identity只是调用eye因此,数组的构造方式没有区别。这是代码identity

def identity(n, dtype=None):
    from numpy import eye
    return eye(n, dtype=dtype)

主要的区别是对角线可以用eye。

扫码关注云+社区