【问题标题】:How to create a n to n matrix in python with input value diagonal如何在 python 中使用输入值对角线创建 n 到 n 矩阵
【发布时间】:2022-11-16 23:51:17
【问题描述】:

我正在进行概率计算,我可以为一个小矩阵运行我的代码;

P_4 = np.array([
    
     [0  ,1  ,0  ,  0,  0],
     [0  ,1/4,3/4,  0,  0],
     [0  ,0  ,2/4,2/4,  0],
     [0  ,0  ,0  ,3/4,1/4],
     [0  ,0  ,0  ,  0,1  ],
   
])

但是,我想创建一个 N*N 矩阵并填充对角线上的值 0/n 和下一个值 1 - 0/n。

n = 5

a = np.zeros((n,n),dtype = int)

np.fill_diagonal(a,np.array([range(1/n)]))

a

写上面的代码给我错误

TypeError: 'float' object cannot be interpreted as an integer

我将不胜感激任何建议。

【问题讨论】:

  • 错误来自range(1/n)。 range() 不能带浮点数。那么你想从那里得到什么?

标签: python numpy


【解决方案1】:

这是使用linspacediag 的一个选项。

n = 5
diag = np.linspace(0, 1, n)
diag1 = (1 - diag[:-1])
a = np.diag(diag) + np.diag(diag1, 1)
a

输出:

array([[0.  , 1.  , 0.  , 0.  , 0.  ],
       [0.  , 0.25, 0.75, 0.  , 0.  ],
       [0.  , 0.  , 0.5 , 0.5 , 0.  ],
       [0.  , 0.  , 0.  , 0.75, 0.25],
       [0.  , 0.  , 0.  , 0.  , 1.  ]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多