我试图获取多维对象的对角线(和反对角线)元素。
这些形状如(2,2)
, (3,3,3)
, (4,4,4,4)
, (5,5,5,5,5)
等等。我认为这并不太相关。
我发现可以使用ndarray
的.diagonal
方法获取对角线元素,但我找不到任何可以获取反对角线的方法。
那么,我需要自己手动实现吗?
[编辑] 所以对于
array([[[54, 81, 31],
[ 4, 83, 18],
[38, 32, 52]],
[[ 2, 45, 87],
[33, 20, 3],
[85, 31, 35]],
[[ 6, 11, 49],
[39, 76, 75],
[28, 52, 63]]])
所以我想要“水平”的对角线,如下:
[54, 45, 49],
[ 4. 20, 75],
etc.
但在某种程度上,它们也是水平的
[ 6, 45, 31],
[39, 20, 18]
然后还有“垂直”的选项,例如:
[54, 33, 28],
[81, 20, 52],
etc.
但是这些也是垂直的:
[6, 33, 38],
[11, 20, 32]
接下来这个,不过你可以怎么称呼它
[54, 20, 63]
还有一些“更长”的对角线,就像之前的那个一样(从几何意义上讲更长,如果你把矩阵看作一个三维几何结构,其中数字被放置在立方体的顶点和它们之间线段的中点上)。
[38, 20, 49],
[6, 20, 52]
接下来,一个小对角线是指在这个矩阵中从右到左或从底部到顶部(但不能同时两者)的一条线,类似于:
[31, 45, 6],
[31, 83, 38] # this is the first classical anti-diagonal in the first matrix
当然,我没有把所有的对角线都列出来,但这是我的要求。我不需要那些偏离主/副对角线的对角线。
如果你也知道这是不可能的,请告诉我,因为那么我会手工完成它。
(3,3,3)
的样本输入和预期输出? - Divakar[31, 45, 6]
而不是[6, 45, 31]
? - Divakar