来源:https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.eye.html
numpy.eye
numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C') [source]
Return a 2-D array with ones on the diagonal and zeros elsewhere.
Parameters:
N : int - Number of rows in the output.
M : int, optional - Number of columns in the output. If None, defaults to N.
k : int, optional - Index of the diagonal: 0 (the default) refers to the main diagonal, a positive value refers to an upper diagonal, and a negative value to a lower diagonal.
dtype : data-type, optional - Data-type of the returned array.
order : {‘C’, ‘F’}, optional - Whether the output should be stored in row-major (C-style) or column-major (Fortran-style) order in memory. New in version 1.14.0.
Returns:
I : ndarray of shape (N,M) - An array where all elements are equal to zero, except for the k-th diagonal, whose values are equal to one.
See also
identity
(almost) equivalent function
diag
diagonal 2-D array from a 1-D array specified by the user.
Examples
>>> np.eye(2,dtype=int)
array([[1, 0],
[0, 1]])
>>> np.eye(3,k=1)
array([[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 0.]])
Source Code 来源:https://github.com/numpy/numpy/blob/v1.15.1/numpy/lib/twodim_base.py#L140-L194
def eye(N, M=None, k=0, dtype=float, order='C'):
"""
Return a 2-D array with ones on the diagonal and zeros elsewhere.
Parameters
----------
N : int
Number of rows in the output.
M : int, optional
Number of columns in the output. If None, defaults to `N`.
k : int, optional
Index of the diagonal: 0 (the default) refers to the main diagonal, a positive value refers to an upper diagonal, and a negative value to a lower diagonal.
dtype : data-type, optional
Data-type of the returned array.
order : {'C', 'F'}, optional
Whether the output should be stored in row-major (C-style) or column-major (Fortran-style) order in memory.
.. versionadded:: 1.14.0
Returns
-------
I : ndarray of shape (N,M)
An array where all elements are equal to zero, except for the `k`-th diagonal, whose values are equal to one.
See Also
--------
identity : (almost) equivalent function
diag : diagonal 2-D array from a 1-D array specified by the user.
Examples
--------
>>> np.eye(2, dtype=int)
array([[1, 0],
[0, 1]])
>>> np.eye(3, k=1)
array([[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 0.]])
"""
if M is None:
M = N
m = zeros((N, M), dtype=dtype, order=order)
if k >= M:
return m
if k >= 0:
i = k
else:
i = (-k) * M
m[:M-k].flat[i::M+1] = 1
return m