Python:如何在列表理解中使用numpy fill_对角线?

2024-04-25 14:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码给出了我想要的输出格式,除了对角线上缺少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循环来做这个。提前谢谢!你知道吗


Tags: key代码innonefor格式npzeros