我该如何在numpy中创建反对角矩阵?我肯定可以手动完成,但如果有函数的话,我很好奇它是什么。我正在寻找一个矩阵,其中从左下到右上的位置填充1,其他所有位置都填充0。
np.eye(n)[::-1]
可以得到以下结果:array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 1., 0., 0., 0., 0.]])
对于 n=5
np.diag()
函数可以从矩阵中提取对角线,或者从数组构建对角线矩阵。您可以使用两次来获取对角线矩阵。import numpy as np
a = np.arange(25).reshape(5,5)
>>> a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
b = np.fliplr(np.diag(np.diag(np.fliplr(a))))
>>> b
[[ 0 0 0 0 4]
[ 0 0 0 8 0]
[ 0 0 12 0 0]
[ 0 16 0 0 0]
[20 0 0 0 0]]
np.fliplr()
。例如:>>> np.fliplr(np.eye(5))
array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 1., 0., 0., 0., 0.]])
np.fliplr(np.eye(n))
来回答这个问题。 - pault
np.eye(5)[::-1]
呢?我不确定有什么比这更好的了。”其中,np.eye(5)[::-1]
是一个Python代码片段,它的作用是创建一个5x5的矩阵,对角线上的元素为1,其他元素为0,并将该矩阵上下翻转。 - jpp