我正在寻找一种有效的方法(最好是一个矢量化的快速内置函数)以对角线顺序展平一个numpy数组。例如:
A=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b=flatten_diagonally(A)
b
应该是[7,4,8,1,5,9,2,6,3]
。在
{cde>不要单独迭代矩阵。出于同样的原因,我也不想预先准备一份按正确顺序列出的所有指数。由于A
很大,结果也同样大,所以我希望避免另外使用大量内存的解决方案。在
如果我可以指定要展平的对角线的子集,那会更好,例如,仅展平第一条和第二条对角线将得到[1,5,9,2,6]
。在
下面的函数基于
indices
比较,基于每个对角线都有一个索引关系的事实,例如在主对角线i==j
,依此类推。。。在对于非平方数组有效。在
示例:
^{pr2}$对于非平方数组:
在数字诊断返回沿某个索引的对角线。Documentation
所以这应该会给你想要的输出:(注意第0条对角线是正常对角线,所以如果你想要子对角线,你可能需要对对角线使用负值。)
请注意,而不是np诊断,您可以使用np.对角线,我不太确定哪个更好。Documentation
相关问题 更多 >
编程相关推荐