原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.fill_diagonal.html
校对:(虚位以待)
numpy.
fill_diagonal
(a, val, wrap=False)[source]填充给定数组的任何维数的主对角线。
对于具有a.ndim > 2
的数组a具有索引a [i, i, ..., i] / t5>全部相同。
此函数修改输入数组就地,不返回值。
参数: | a:数组,至少为2-D。
val:标量
wrap:bool
|
---|
笔记
版本1.4.0中的新功能。
这个功能可以通过diag_indices
获得,但在内部,这个版本使用一个快得多的实现,从来不构造索引和使用简单的切片。
例子
>>> a = np.zeros((3, 3), int)
>>> np.fill_diagonal(a, 5)
>>> a
array([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])
相同的功能可以对4-D数组进行操作:
>>> a = np.zeros((3, 3, 3, 3), int)
>>> np.fill_diagonal(a, 4)
为了清楚起见,我们只显示几个块:
>>> a[0, 0]
array([[4, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> a[1, 1]
array([[0, 0, 0],
[0, 4, 0],
[0, 0, 0]])
>>> a[2, 2]
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 4]])
wrap选项仅影响高矩阵:
>>> # tall matrices no wrap
>>> a = np.zeros((5, 3),int)
>>> fill_diagonal(a, 4)
>>> a
array([[4, 0, 0],
[0, 4, 0],
[0, 0, 4],
[0, 0, 0],
[0, 0, 0]])
>>> # tall matrices wrap
>>> a = np.zeros((5, 3),int)
>>> fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0],
[0, 4, 0],
[0, 0, 4],
[0, 0, 0],
[4, 0, 0]])
>>> # wide matrices
>>> a = np.zeros((3, 5),int)
>>> fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0, 0, 0],
[0, 4, 0, 0, 0],
[0, 0, 4, 0, 0]])