【发布时间】:2016-05-23 11:40:51
【问题描述】:
假设我有一个像这样的正方形numpy.matrix
[['78' '17' '53' '28']
['22' '75' '31' '67']
['15' '94' '03' '80']
['04' '62' '16' '14']]
出于我的目的,我需要一个向上的所有对角线的“菱形结构”(请注意,列表列表适合我的目的)
[ ['78'],
['22' '17'],
['15' '75' '53'],
['04' '94' '31' '28'],
['62' '03' '67'],
['16' '80'],
['14'], ]
最好的方法是什么?
我无法决定是否需要在位置访问中使用一些递增的魔法,或者使用numpy.diagonal 的一些内置方式是可能的,我还没有成功使用。
【问题讨论】:
-
这不再是一个 NxN 数组/矩阵,除非你屏蔽了其他值,或者你实际上只是想要一个该形式的列表列表。你为什么需要这个?你可以重新排列你的索引来模仿它吗?
-
是的,我知道它将不再是方阵/数组,列表列表可以正常工作。我需要这些对角线进行一些类似列表的操作,这些操作取决于每个对角线的长度,我事先不知道(不是简单的 4x4 案例,更像是 ~1000x~1000 案例)
-
循环很容易,我渴望看到一个矢量化/简洁的解决方案。
-
@timgeb 同意,是的,索引循环和已知矩阵大小非常简单,只是有点乏味。似乎必须有更好的解决方案。
标签: python python-3.x numpy matrix