環(huán)境:Anaconda3-5.2.0-Linux (Python3.6.5)
? 我們知道,np.eye() 和 np.identity() 都是用來(lái)創(chuàng)建 NxN 的單位矩陣,既然函數(shù)功能相同,那兩者有什么區(qū)別呢 ? 先來(lái)看兩組演示:
>>> 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
? 結(jié)論:數(shù)據(jù)類型相同,存儲(chǔ)地址不同。但還不能做出明確的區(qū)別判斷,再來(lái)看看函數(shù)的源代碼:
# 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)
? 區(qū)別很明顯,函數(shù) eye 和 indetity 都經(jīng)過 set_module 裝飾器裝飾,而函數(shù) identity 的返回值是經(jīng)過 eye() 處理后返回的。
? 希望我的文章對(duì)你有所幫助。