Numpy 一个对角数组

Numpy 一个对角数组,numpy,Numpy,我想创建一个正方形numpy数组,这样它就可以从对角线开始计数。 你知道有哪一种班轮吗 5x5的示例: array([[ 1., 2., 3., 4., 5.], [ 0., 1., 2., 3., 4.], [ 0., 0., 1., 2., 3.], [ 0., 0., 0., 1., 2.], [ 0., 0., 0., 0., 1.]]) 谢谢你的解决方案。以下是我最终使用的可读性:np.t

我想创建一个正方形numpy数组,这样它就可以从对角线开始计数。 你知道有哪一种班轮吗

5x5的示例:

array([[ 1.,  2.,  3.,  4.,  5.],
       [ 0.,  1.,  2.,  3.,  4.],
       [ 0.,  0.,  1.,  2.,  3.],
       [ 0.,  0.,  0.,  1.,  2.],
       [ 0.,  0.,  0.,  0.,  1.]])

谢谢你的解决方案。以下是我最终使用的可读性:np.triu(np.ones([K,K]),0.cumsum(axis=1),这也是一个很酷的方法。运行了一个快速计时测试,两种方法最终几乎完全相同(在5000x5000网格上,每次运行254ms与257ms),因此从性能角度来看,任何一种方法都是可行的。感谢您的解决方案。以下是我最终使用的可读性:np.triu(np.ones([K,K]),0.cumsum(axis=1),这也是一个很酷的方法。运行了一个快速计时测试,两种方法最终几乎完全相同(在5000x5000网格上,每次运行254ms与257ms),因此从性能角度来看,任何一种方法都是可行的。
In [49]: np.identity(5).cumsum(axis=1).cumsum(axis=1)
Out[49]:
array([[ 1.,  2.,  3.,  4.,  5.],
       [ 0.,  1.,  2.,  3.,  4.],
       [ 0.,  0.,  1.,  2.,  3.],
       [ 0.,  0.,  0.,  1.,  2.],
       [ 0.,  0.,  0.,  0.,  1.]]
>>> mat = np.vstack((np.concatenate((np.zeros(i),np.arange(1,5-i+1))) for i in range(0,5)))
>>> mat 
array([[1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4.],
       [0., 0., 1., 2., 3.],
       [0., 0., 0., 1., 2.],
       [0., 0., 0., 0., 1.]])