如何获得一个3D NumPy数组的所有2D对角线

如何获得一个3D NumPy数组的所有2D对角线

让我们看看获取三维NumPy数组的所有二维对角线的程序。为此,我们使用NumPy库的numpy.diagonal()函数。这个函数从一个n维数组中返回指定的对角线。

语法: numpy.diagonal(a, axis1, axis2)
参数:

  • a:表示需要从中提取对角线的阵列。
  • axis1:代表2维子阵列的第一个轴线。
  • axis2:代表二维子阵列的第二个轴。

返回:对角线元素数组。

现在,让我们看一个例子。

示例 1:

# Import the numpy package
import numpy as np
  
# Create 3D-numpy array
# of 4 rows and 4 columns
arr = np.arange(3 * 4 * 4).reshape(3, 4, 4)
  
print("Original 3d array:\n", 
      arr)
  
# Create 2D diagonal array
diag_arr = np.diagonal(arr, 
                       axis1 = 1,
                       axis2 = 2)
  
print("2d diagonal array:\n", 
      diag_arr)

输出:

Original 3d array:
 [[[ 0  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]
  [28 29 30 31]]

 [[32 33 34 35]
  [36 37 38 39]
  [40 41 42 43]
  [44 45 46 47]]]
2d diagonal array:
 [[ 0  5 10 15]
 [16 21 26 31]
 [32 37 42 47]]


示例 2:

# Import the numpy package
import numpy as np
  
# Create 3D numpy array
# of 3 rows and 4 columns
arr = np.arange(3 * 3 * 4).reshape(3, 3, 4)
  
print("Original 3d array:\n", 
      arr)
  
# Create 2D diagonal array
diag_arr = np.diagonal(arr, 
                       axis1 = 1,
                       axis2 = 2)
  
print("2d diagonal array:\n",
      diag_arr)

输出:

Original 3d array:
 [[[ 0  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]
  [28 29 30 31]
  [32 33 34 35]]]
2d diagonal array:
 [[ 0  5 10]
 [12 17 22]
 [24 29 34]]


示例 3:

# Import the numpy package
import numpy as np
  
# Create 3D numpy array
# of 5 rows and 6 columns
arr = np.arange(3 * 5 * 6).reshape(3, 5, 6)
print("Original 3d array:\n",
      arr)
  
# Create 2D diagonal array
diag_arr = np.diagonal(arr, 
                       axis1 = 1,
                       axis2 = 2)
  
print("2d diagonal array:\n",
      diag_arr)

输出:

Original 3d array:
 [[[ 0  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 28 29]]

 [[30 31 32 33 34 35]
  [36 37 38 39 40 41]
  [42 43 44 45 46 47]
  [48 49 50 51 52 53]
  [54 55 56 57 58 59]]

 [[60 61 62 63 64 65]
  [66 67 68 69 70 71]
  [72 73 74 75 76 77]
  [78 79 80 81 82 83]
  [84 85 86 87 88 89]]]
2d diagonal array:
 [[ 0  7 14 21 28]
 [30 37 44 51 58]
 [60 67 74 81 88]]


Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 数组操作