环境:Anaconda3-5.2.0-Linux (Python3.6.5)
我们知道,np.eye() 和 np.identity() 都是用来创建 NxN 的单位矩阵,既然函数功能相同,那两者有什么区别呢 ? 先来看两组演示:
>>> import numpy as np
>>> np.eye(3) == np.identity(3)
Out:
array([[ True, True, True],
[ True, True, True],
[ True, True, True]])
>>> import numpy as np
>>> np.eye(3) is np.identity(3)
Out: False
结论:数据类型相同,存储地址不同。但还不能做出明确的区别判断,再来看看函数的源代码:
# eye()
@set_module('numpy')
def eye(N, M=None, k=0, dtype=float, order='C'):
"""
Return a 2-D array with ones on the diagonal and zeros elsewhere.
"""
......
return m
# identity()
@set_module('numpy')
def identity(n, dtype=None):
"""
Return the identity array
"""
......
from numpy import eye
return eye(n, dtype=dtype)
区别很明显,函数 eye 和 indetity 都经过 set_module 装饰器装饰,而函数 identity 的返回值是经过 eye() 处理后返回的。
希望我的文章对你有所帮助。