原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.diagonal.html
校对:(虚位以待)
numpy.
diagonal
(a, offset=0, axis1=0, axis2=1)[source]返回指定的对角线。
如果a是2-D,则返回具有给定偏移的a的对角线,即,形式a [ i + offset]
。如果a具有多于两个维度,则由axis1和axis2指定的轴用于确定2-D子阵列,返回。可以通过删除axis1和axis2并将右侧的索引添加到等于所生成的对角线的大小来确定生成的数组的形状。
在1.7之前的NumPy版本中,此函数总是返回一个新的独立数组,其中包含对角线中的值的副本。
在NumPy 1.7和1.8中,它继续返回对角线的副本,但是根据这个事实被弃用。写入结果数组继续工作,就像以前一样,但发出了FutureWarning。
从NumPy 1.9开始,它返回原始数组的只读视图。尝试写入生成的数组将产生错误。
在将来的某个版本中,它将返回读/写视图,并且写入返回的数组将更改原始数组。返回的数组将具有与输入数组相同的类型。
如果你不写这个函数返回的数组,那么你可以忽略所有上面的。
如果你依赖于当前的行为,那么我们建议显式复制返回的数组,即使用np.diagonal(a).copy()
而不是np.diagonal(a)
这将与过去和未来版本的NumPy工作。
参数: | a:array_like
offset:int,可选
axis1:int,可选
axis2:int,可选
|
---|---|
返回: | array_of_diagonals:ndarray
|
上升: | ValueError
|
例子
>>> a = np.arange(4).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a.diagonal()
array([0, 3])
>>> a.diagonal(1)
array([1])
3-D示例:
>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> a.diagonal(0, # Main diagonals of two arrays created by skipping
... 0, # across the outer(left)-most axis last and
... 1) # the "middle" (row) axis first.
array([[0, 6],
[1, 7]])
我们刚刚获得的主对角线的子阵列;注意,每个对应于固定最右(列)轴,并且对角线在行中“打包”。
>>> a[:,:,0] # main diagonal is [0 6]
array([[0, 2],
[4, 6]])
>>> a[:,:,1] # main diagonal is [1 7]
array([[1, 3],
[5, 7]])