Kie*_*unt 32 python arrays performance numpy
说完看了看man页面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
Run Code Online (Sandbox Code Playgroud)
那么,什么是使用的优势identity
超过eye
?
Ale*_*ley 44
identity
只是调用eye
所以数组的构造方式没有区别.这是以下代码identity
:
def identity(n, dtype=None):
from numpy import eye
return eye(n, dtype=dtype)
Run Code Online (Sandbox Code Playgroud)
正如你所说,主要的区别在于,eye
对角线可以偏移,而identity
只填充主对角线.
由于单位矩阵在数学中是如此常见的结构,因此使用的主要优点似乎identity
仅仅是它的名称.
归档时间: |
|
查看次数: |
14322 次 |
最近记录: |