python - 在 Numpy 中制作特殊的对角矩阵

标签 python arrays numpy matrix toeplitz

我正在尝试制作一个如下所示的 numpy 数组:

[a b c       ]
[  a b c     ]
[    a b c   ]
[      a b c ] 

所以这涉及到更新主对角线和它上面的两条对角线。

执行此操作的有效方法是什么?

最佳答案

您可以使用 np.indices 获取数组的索引,然后将值分配到您想要的位置。

a = np.zeros((5,10))
i,j = np.indices(a.shape)

i,j 分别是行索引和列索引。

a[i==j] = 1.
a[i==j-1] = 2.
a[i==j-2] = 3.

将导致:

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

关于python - 在 Numpy 中制作特殊的对角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026541/

相关文章:

matlab - 如何从 NumPy 数组中包含的样本中播放声音?

python - 将非数字元组转换为 numpy 矩阵

python - Pycharm python没有可视化决策树

python - 从 Python 列表中提取数字

python - 更新 numpy 数组的 3 维和 4 维元素

c - 如何在 C 中将 2 个 float 组合并到 1 个结构数组中

python - 使用 Python 读取 USB-GPS 信息

python - tkinter 中是否可以有清晰/透明的标签?

php - 在循环中为每个用户存储值(value)

python - 如何更改 .npz 文件中的值?