numpy排列对角线数组

时间:2018-08-26 00:34:50

标签: 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.]])

2 个答案:

答案 0 :(得分:2)

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.]]

答案 1 :(得分:0)

>>> 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.]])