美文网首页Python数据分析程序员IT@程序员猿媛
Numpy 中函数 eye 和 identity 的区别

Numpy 中函数 eye 和 identity 的区别

作者: 一只小菠菜 | 来源:发表于2019-04-19 08:09 被阅读7次

环境: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 的区别

    本文链接:https://www.haomeiwen.com/subject/bvefgqtx.html