Numpy 单位矩阵创建 eye()函数详解
eye()函数的参数设置如下
def eye(N, M=None, k=0, dtype=float, order='C', *, like=None):
N表示行数,M表示列数,k表示偏移,dtype为元素数据类型,order为存储顺序,like表示生成的为与like参数相同类型的数组(这个参数不常用,这里不做演示)
创建3行3列单位矩阵
import numpy as np
data1 = np.eye(3)
print(data1)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
一般来说单位矩阵为方阵,所以一般创建标准单位矩阵只需设置行或列数其一即可,但是这里设置行和列两个参数的原因是可以设置类单位矩阵(也就是即使矩阵为非方阵,对角线也默认从左上角开始)
import numpy as np
data1 = np.eye(N = 3,M = 4)
print(data1)
# [[1. 0. 0. 0.]
# [0. 1. 0. 0.]
# [0. 0. 1. 0.]]
k参数的作用为空值对角线或类对角线的上移或下移,若k>0则上移,反之则下移,数值为移动的单位数
import numpy as np
data1 = np.eye(N = 3,M = 4,k=1)
data2 = np.eye(N = 5,M=4,k=-2)
print(data1,end='\n\n')
print(data2)
# [[0. 1. 0. 0.]
# [0. 0. 1. 0.]
# [0. 0. 0. 1.]]
#
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [1. 0. 0. 0.]
# [0. 1. 0. 0.]
# [0. 0. 1. 0.]]
order参数为存储顺序,默认为‘C’,也就是按行顺序存储,也可以设置为‘F’,就是按列顺序存储
下面展示内存中的存储状态
import numpy as np
data1 = np.eye(N = 3,M = 4,k=1,order='F')
data2 = np.eye(N = 3,M = 4,k=1,order='C')
print(data1.reshape(-1,order='F'))
print(data2.reshape(-1))
# [0. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1.]
# [0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1.]