【发布时间】:2021-07-06 22:28:31
【问题描述】:
在 Matlab 中,我可以创建一个矩形“身份”矩阵,例如,eye(2, 3)。 Python 中的 python 等价物是什么?
【问题讨论】:
在 Matlab 中,我可以创建一个矩形“身份”矩阵,例如,eye(2, 3)。 Python 中的 python 等价物是什么?
【问题讨论】:
与np.identity 不同,np.eye 函数也接受可选的第二个参数:
>>> np.eye(2, 3)
array([[1., 0., 0.],
[0., 1., 0.]])
您还可以使用类似于np.diagonal 使用的方法进行更多手动操作。您不能直接使用np.diagonal,因为它会创建副本或只读视图。此方法手动创建相同的视图,但可写:
a = np.zeros((2, 3))
a.ravel()[::a.shape[1] + 1] = 1
即使a.ravel 会使用np.lib.stride_tricks.as_strided 返回副本,您也可以创建类似a.ravel()[::a.shape[1] + 1] 的视图:
a = np.zeros((2, 3))
np.lib.stride_tricks.as_strided(a, shape=(min(a.shape),), strides=(sum(a.strides),))[:] = 1
【讨论】: