python - 获取 Numpy 数组的反对角线

标签 python arrays numpy

我有一个 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/

相关文章:

python - 语法错误 : Generator expression must be parenthesized

python - 在排序时访问列表

java - 从数组中找到元素的最低绝对总和

python - PyCharm 中带有 nptyping 和 Array 的 Numpy Typehint

python - 通过 Numpy/Pandas 使用 (n x 1) 数据创建一个 n x m 多项式数组

python - 实现表示 "a list with a title"的类的 pythonic 方法是什么?

python - 从正则表达式结果 python 中删除“

python - 使用 numpy 广播/矢量化从其他数组构建新数组

java - char 数组中出现意外字符

python - 直接访问 Numpy RandomState 对象的方法