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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容