在 Python 中制作 3D 对角矩阵
Making a 3D diagonal matrix in Python
我想创建 3D 对角矩阵。我已经成功地用 numpy 例程创建了一个 numpy.fill_diagonal(numpy.zeros((N, N, N)), n)
,但是它不允许选择要填充的对角线。
换句话说,我想找到这个 numpy 例程的 3D 泛化:https://numpy.org/doc/stable/reference/generated/numpy.diag.html。谢谢。
好吧,除了使用 np.diag
填充半对角线之外,您还可以像这样手动完成:
N = 4
arr = np.zeros((N, N))
i = np.arange(N-1)
arr[i,i+1] = 1
array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]])
并且它具有泛化到 3d 数组的优势。
arr = np.zeros((N, N, N))
i = np.arange(N-1)
arr[i,i,i+1] = 1
array([[[0., 1., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
我想创建 3D 对角矩阵。我已经成功地用 numpy 例程创建了一个 numpy.fill_diagonal(numpy.zeros((N, N, N)), n)
,但是它不允许选择要填充的对角线。
换句话说,我想找到这个 numpy 例程的 3D 泛化:https://numpy.org/doc/stable/reference/generated/numpy.diag.html。谢谢。
好吧,除了使用 np.diag
填充半对角线之外,您还可以像这样手动完成:
N = 4
arr = np.zeros((N, N))
i = np.arange(N-1)
arr[i,i+1] = 1
array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]])
并且它具有泛化到 3d 数组的优势。
arr = np.zeros((N, N, N))
i = np.arange(N-1)
arr[i,i,i+1] = 1
array([[[0., 1., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])