python – 填充numpy数组的对角线失败

我正在尝试填充矩阵的偏移对角线:

loss_matrix = np.zeros((125,125))

np.diagonal(loss_matrix, 3).fill(4)

ValueError: assignment destination is read-only

两个问题:

1)如果不迭代索引,如何设置numpy数组的偏移对角线?

2)为什么np.diagonal的结果只读? numpy.diagonal的文档读取:“在NumPy 1.10中,它将返回读/写视图,写入返回的数组将改变原始数组.”

np.__version__

'1.10.1'

解决方法:

根据NumPy问题跟踪器上的discussion判断,看起来该功能陷入了困境,他们从未解决过修复文档以说它被延迟了.

如果你需要可写性,你可以强迫它.这只适用于NumPy 1.9及更高版本,因为np.diagonal在较低版本上复制:

diag = np.diagonal(loss_matrix, 3)

# It's not writable. MAKE it writable.
diag.setflags(write=True)

diag.fill(4)
上一篇:leetcode-51-N皇后


下一篇:如何在SciPy中创建对角稀疏矩阵