Python:如何在列表推导中对零的矩阵使用numpy fill_diagonals?

时间:2017-04-04 20:35:14

标签: python numpy matrix list-comprehension diagonal

以下代码给出了我想要的输出格式,但对角线上缺少1个。

>>> xlist = [2,3]
>>>[{'key': np.zeros(shape=(4, x, x))} for x in xlist]

这是当前的输出:

`

Out[610]: [{'key': array([[[ 0.,  0.],
          [ 0.,  0.]],

         [[ 0.,  0.],
          [ 0.,  0.]],


     [[ 0.,  0.],
      [ 0.,  0.]],

     [[ 0.,  0.],
      [ 0.,  0.]]])}, 

{'key': array([[[ 0.,  0.,  0.],
          [ 0.,  0.,  0.],
          [ 0.,  0.,  0.]],

         [[ 0.,  0.,  0.],
          [ 0.,  0.,  0.],
          [ 0.,  0.,  0.]],

         [[ 0.,  0.,  0.],
          [ 0.,  0.,  0.],
          [ 0.,  0.,  0.]],

         [[ 0.,  0.,  0.],
          [ 0.,  0.,  0.],
          [ 0.,  0.,  0.]]])}]

`

但我希望每个矩阵都包含这样的对角线:

     [[ 1.,  0.,  0.],
      [ 0.,  1.,  0.],
      [ 0.,  0.,  1.]]

我在这个主题上尝试了几种变体无济于事:

>>> [{'key': np.fill_diagonal(y, 1.0) for y in np.zeros(shape=(4, x,x))} for x in xlist]

Out[613]: [{'key': None}, {'key': None}]

我试图用尽可能少的for循环来做这件事。提前谢谢!

0 个答案:

没有答案