來源: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