获取一个3D NumPy数组的所有2D对角线可以使用numpy.diagonal()
函数。该函数可以对于一个二维数组返回其对角线上的元素,而对于一个三维数组可以沿着给定的两个轴返回所有2D的对角线。
下面是一个完整的攻略:
步骤一:导入NumPy库
使用NumPy库是实现该任务的关键,所以首先要导入NumPy库
import numpy as np
步骤二:创建一个3D的NumPy数组
为了测试和演示目的,我们需要首先创建一个3D的NumPy数组
a = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]]])
以上代码创建了一个3行3列的三维数组,其中包含3个2D数组,每个2D数组有3行3列的元素。
步骤三:沿着给定的两个轴返回2D对角线
使用numpy.diagonal()
函数沿着给定的两个轴返回所有2D的对角线。该函数可接收下列参数:
a
:要获取对角线的数组。axis1
:指定要返回的轴1,如果是0表示沿着axis0的第一维求对角线,如果是1则返回axis0上的二维数组的对角线,如果是2,则返回axis0和axis1的二维数组对角线。axis2
:指定要返回的轴2,含义同上。offset
:相对与两个轴的计算偏移量,可为负数。默认为0,表示主对角线。
以下是一个实现上述过程的示例代码:
# 沿着axis0和axis1轴返回所有2D的对角线
diagonals = np.diagonal(a, axis1=1, axis2=2)
# 打印对角线
print(diagonals)
运行以上代码后将输出如下结果:
[[[1 5 9]
[4 8]
[7]]
[[10 14 18]
[13 17]
[16]]
[[19 23 27]
[22 26]
[25]]]
以上代码沿着axis1
和axis2
轴返回了3个2D对角线,其中第1个二维数组的主对角线是[1, 5, 9]
,第2个二维数组的主对角线是[10, 14, 18]
,第3个二维数组的主对角线是[19, 23, 27]
。
示例二:
以沿着axis0和axis2轴返回所有2D的对角线为例,我们可以简单修改上面的代码:
# 沿着axis0和axis2轴返回所有2D的对角线
diagonals = np.diagonal(a, axis1=1, axis2=0)
# 打印对角线
print(diagonals)
运行以上代码后将输出如下结果:
[[[ 1 13 25]
[ 4 16 28]]
[[ 2 14 26]
[ 5 17 29]
[ 8 20]]
[[ 3 15 27]
[ 6 18 30]
[ 9 21]]]
以上代码沿着axis1
和axis2
轴返回了3个2D对角线,其中第1个二维数组的主对角线是[1, 13, 25, 4, 16, 28]
,第2个二维数组的主对角线是[2, 14, 26, 5, 17, 29, 8, 20]
,第3个二维数组的主对角线是[3, 15, 27, 6, 18, 30, 9, 21]
。
以上就是获取一个3D NumPy数组的所有2D对角线的完整攻略。