numpy.对角线#
- 麻木的。对角线( a , offset = 0 , axis1 = 0 , axis2 = 1 ) [来源] #
返回指定的对角线。
如果a是二维的,则返回具有给定偏移量的a对角线,即 形式的元素集合。如果 a超过二维,则使用axis1 和axis2指定的轴来确定返回其对角线的二维子数组。可以通过删除axis1和axis2并在右侧添加等于结果对角线大小的索引来确定结果数组的形状。
a[i, i+offset]
在 1.7 之前的 NumPy 版本中,此函数始终返回一个新的独立数组,其中包含对角线中值的副本。
在 NumPy 1.7 和 1.8 中,它继续返回对角线的副本,但根据这一事实已被弃用。写入结果数组继续像以前一样工作,但会发出 FutureWarning。
从 NumPy 1.9 开始,它返回原始数组的只读视图。尝试写入结果数组将产生错误。
在未来的某个版本中,它将返回读/写视图,并且写入返回的数组将更改原始数组。返回的数组将具有与输入数组相同的类型。
如果您不写入此函数返回的数组,那么您可以忽略上述所有内容。
如果您依赖于当前的行为,那么我们建议显式复制返回的数组,即使用
np.diagonal(a).copy()
而不只是np.diagonal(a)
.这适用于过go和未来版本的 NumPy。- 参数:
- 类似数组
从中获取对角线的数组。
- 偏移量int,可选
对角线与主对角线的偏移。可以是正值,也可以是负值。默认为主对角线 (0)。
- axis1整数,可选
用作二维子数组的第一个轴的轴,应从中获取对角线。默认为第一轴 (0)。
- axis2整数,可选
用作二维子数组的第二个轴的轴,应从中获取对角线。默认为第二轴 (1)。
- 返回:
- 加薪:
- 值错误
如果a的维数小于2。
例子
>>> 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]])
反对角线可以通过使用 或 反转元素的顺序来
numpy.flipud
获得numpy.fliplr
。>>> a = np.arange(9).reshape(3, 3) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.fliplr(a).diagonal() # Horizontal flip array([2, 4, 6]) >>> np.flipud(a).diagonal() # Vertical flip array([6, 4, 2])
请注意,检索对角线的顺序因翻转函数而异。