我有一个 Numpy 数组,我想得到它的反转对角线......
>>> import numpy as np
>>> arr = np.eye(6, dtype=int)
>>> arr
... array([[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1]])
我知道为了获得对角线,我可以这样做:
>>> arr.diagonal()
... array([1, 1, 1, 1, 1, 1])
但我想得到它的反对角线。
>>> flipped_arr = np.fliplr(arr)
>>> flipped_arr
... array([[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0]])
当我尝试获取flipped_arr
的对角线时,会发生以下情况:
>>> flipped_arr.diagonal()
... array([0, 0, 0, 0, 0, 0])
有什么办法可以解决这个问题吗?
最佳答案
所以你想得到反对角线,你似乎已经有了解决方案
def anti_diagonal(arr):
return np.fliplr(arr).diagonal()
对于像这样的矩阵
[[0, 0, 1],
[0, 2, 0],
[3, 0, 0]]
那么anti_diagonal
就是
[1, 2, 3]
关于python - 获取 Numpy 数组的反对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549024/