Numpy 中函数 eye 和 identity 的区别

环境: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() 处理后返回的。

  希望我的文章对你有所帮助。

你可能感兴趣的:(Numpy 中函数 eye 和 identity 的区别)