添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

什么是 Python 矩阵?

Python 矩阵是存储在行和列中的专用二维矩形数据数组。矩阵中的数据可以是数字、字符串、表达式、符号等。矩阵是可用于数学和科学计算的重要数据结构之一。

在本 Python 教程中,您将学习:

  • 什么是 Python 矩阵?
  • Python 矩阵是如何工作的?
  • 使用嵌套列表数据类型创建 Python 矩阵
  • 使用列表读取 Python Matrix 中的数据。
  • 示例 2:读取每一行的最后一个元素。
  • 示例 3:打印矩阵中的行
  • 使用嵌套列表添加矩阵
  • 使用嵌套列表进行矩阵乘法
  • 使用 Python Numpy 包中的数组创建 Python 矩阵
  • 使用 Numpy.Array() 进行矩阵运算
  • 访问 NumPy 矩阵
  • Python 矩阵是如何工作的?

    矩阵格式的二维数组里面的数据如下:

    步骤 1)

    它显示了一个 2×2 矩阵。它有两行和两列。矩阵内的数据是数字。 row1 的值为 2,3,row2 的值为 4,5。列 col1 的值为 2,4,col2 的值为 3,5。

    步骤 2)

    它显示了一个 2×3 矩阵。它有两行和三列。第一行内的数据,即 row1 的值是 2,3,4,row2 的值是 5,6,7。 col1 列的值为 2,5,col2 的值为 3,6,col3 的值为 4,7。

    同样,您可以将数据存储在 Python 中的 nxn 矩阵中。很多运算都可以在类似矩阵的加法、减法、乘法等上进行。

    Python 没有直接的方法来实现矩阵数据类型。

    python矩阵使用数组,同样可以实现。

    • 使用嵌套列表数据类型创建 Python 矩阵
    • 使用 Python Numpy 包中的数组创建 Python 矩阵
    • 使用嵌套列表数据类型创建 Python 矩阵

      在 Python 中,数组使用列表数据类型表示。所以现在将利用列表来创建一个python矩阵。

      我们将创建一个 3×3 矩阵,如下所示:

      • 矩阵有 3 行 3 列。
      • 列表格式的第一行如下:[8,14,-6]
      • 列表中的第二行将是:[12,7,4]
      • 列表中的第三行将是:[-11,3,21]
      • 包含所有行和列的列表内的矩阵如下所示:

        List = [[Row1], 
                   [Row2], 
                   [Row3]
                   [RowN]]
         所以按照上面列出的矩阵,带有矩阵数据的列表类型如下:

        M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]
        

        使用列表读取 Python Matrix 中的数据。

        我们将使用上面定义的矩阵。该示例将读取数据,打印矩阵,显示每一行的最后一个元素。

        示例:打印矩阵

        M1 = [[8, 14, -6], 
                   [12,7,4], 
                   [-11,3,21]]
        #To print the matrix
        print(M1)
        The Matrix M1 =  [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
        

        示例 2:读取每一行的最后一个元素。

        M1 = [[8, 14, -6],
                   [12,7,4], 
                   [-11,3,21]]
        matrix_length = len(M1)
        #To read the last element from each row.
        for i in range(matrix_length):
            print(M1[i][-1])
        

        示例 3:打印矩阵中的行

        M1 = [[8, 14, -6],
                   [12,7,4], 
                   [-11,3,21]]
        matrix_length = len(M1)
        #To print the rows in the Matrix
        for i in range(matrix_length):
            print(M1[i])
        [8, 14, -6]
        [12, 7, 4]
        [-11, 3, 21]
        

        使用嵌套列表添加矩阵

        我们可以很容易地添加两个给定的矩阵。这里的矩阵将采用列表形式。让我们处理一个示例,该示例将注意添加给定的矩阵。

        M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] 矩阵 2:

        M2 = [[3, 16, -6],
                   [9,7,-4], 
                   [-1,3,13]]
         最后将初始化一个矩阵,该矩阵将存储 M1 + M2 的结果。

        M3 = [[0,0,0], [0,0,0], [0,0,0]]

        示例:添加矩阵

        要补充的是,矩阵将使用一个 for 循环,该循环将遍历给定的两个矩阵。

        M1 = [[8, 14, -6], 
              [12,7,4], 
              [-11,3,21]]
        M2 = [[3, 16, -6],
                   [9,7,-4], 
                   [-1,3,13]]
        M3  = [[0,0,0],
               [0,0,0],
               [0,0,0]]
        matrix_length = len(M1)
        #To Add M1 and M2 matrices
        for i in range(len(M1)):
        for k in range(len(M2)):
                M3[i][k] = M1[i][k] + M2[i][k]
        #To Print the matrix
        print("The sum of Matrix M1 and M2 = ", M3)
        The sum of Matrix M1 and M2 =  [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
        

        使用嵌套列表进行矩阵乘法

        为了将矩阵相乘,我们可以在两个矩阵上使用 for 循环,如下面的代码所示:

        M1 = [[8, 14, -6], 
              [12,7,4], 
              [-11,3,21]]
        M2 = [[3, 16, -6],
                   [9,7,-4], 
                   [-1,3,13]]
        M3  = [[0,0,0],
               [0,0,0],
               [0,0,0]]
        matrix_length = len(M1)
        #To Multiply M1 and M2 matrices
        for i in range(len(M1)):
        for k in range(len(M2)):
                M3[i][k] = M1[i][k] * M2[i][k]
        #To Print the matrix
        print("The multiplication of Matrix M1 and M2 = ", M3)
        The multiplication of Matrix M1 and M2 =  [[24, 224, 36], [108, 49, -16], [11, 9, 273]]
        

        使用 Python Numpy 包中的数组创建 Python 矩阵

        python 库 Numpy 有助于处理数组。与列表相比,numpy 处理数组的速度要快一些。

        要使用 Numpy,您需要先安装它。请按照以下步骤安装 Numpy。

        步骤 1)

        安装 Numpy 的命令是:

        pip install NumPy

        步骤 2)

        要在您的代码中使用 Numpy,您必须导入它。

        import NumPy

        步骤 3)

        也可以使用别名导入 Numpy,如下图:

        import NumPy as np

        我们将使用 Numpy 的 array() 方法来创建一个 python 矩阵。

        示例:在 Numpy 中创建 Python 矩阵的数组

        import numpy as np
        M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
        print(M1)
        [[  5 -10  15]
         [  3  -6   9]
         [ -4   8  12]]
        

        使用 Numpy.Array() 进行矩阵运算

        可以完成的矩阵运算是加法、减法、乘法、转置、读取矩阵的行、列、对矩阵进行切片等。在所有示例中,我们将使用 array() 方法。

        矩阵加法

        为了对矩阵进行加法,我们将使用 numpy.array() 创建两个矩阵,并使用 (+) 运算符将它们相加。

        import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]]) M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]]) M3 = M1 + M2 print(M3) [[ 12 -12 36] [ 16 12 48] [ 6 -12 60]] 要对矩阵执行减法运算,我们将使用 numpy.array() 创建两个矩阵并使用 (-) 运算符将它们相减。

        import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]]) M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]]) M3 = M1 - M2 print(M3) [[ -6 24 -18] [ -6 -32 -18] [-20 40 -18]] 首先将使用 numpy.arary() 创建两个矩阵。要将它们相乘,您可以使用 numpy dot() 方法。 Numpy.dot() 是矩阵 M1 和 M2 的点积。 Numpy.dot() 处理二维数组并执行矩阵乘法。

        import numpy as np M1 = np.array([[3, 6], [5, -10]]) M2 = np.array([[9, -18], [11, 22]]) M3 = M1.dot(M2) print(M3) [[ 93 78] [ -65 -310]] 通过将行更改为列并将列更改为行来计算矩阵的转置。 Numpy 的 transpose() 函数可用于计算矩阵的转置。

        import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]]) M2 = M1.transpose() print(M2) [[ 3 5 4] [ 6 -10 8] [ 9 15 12]] 切片将根据给定的开始/结束索引返回矩阵中的元素。

        • 切片的语法是——[start:end]
        • 如果没有给出起始索引,则认为是0。例如[:5],表示为[0:5]。
        • 如果结尾不通过,则取数组的长度。
        • 如果 start/end 为负值,则从数组末尾开始切片。
        • 在我们对矩阵进行切片之前,让我们首先了解如何在一个简单的数组上应用切片。

          import numpy as np
          arr = np.array([2,4,6,8,10,12,14,16])
          print(arr[3:6]) # will print the elements from 3 to 5
          print(arr[:5]) # will print the elements from 0 to 4
          print(arr[2:]) # will print the elements from 2 to length of the array.
          print(arr[-5:-1]) # will print from the end i.e. -5 to -2
          print(arr[:-1]) # will print from end i.e. 0 to -2
          [ 8 10 12]
          [ 2  4  6  8 10]
          [ 6  8 10 12 14 16]
          [ 8 10 12 14]
          [ 2  4  6  8 10 12 14]
           现在让我们在矩阵上实现切片。对矩阵进行切片

          语法为 M1[row_start:row_end, col_start:col_end]

          • 第一个开始/结束将是行,即选择矩阵的行。
          • 第二个开始/结束将是列,即选择矩阵的列。
          • 我们要使用的矩阵M1 t如下:

            M1 = np.array([[2, 4, 6, 8, 10], 
                [3, 6, 9, -12, -15],
                [4, 8, 12, 16, -20],
                [5, -10, 15, -20, 25]])
             一共有4行。索引从 0 到 3 开始。第 0
             行是 [2,4,6,8,10], 1
             行是 [3,6,9,-12,-15] 后跟 2
             矩阵 M1 有 5 列。索引从 0 到 4 开始。第 0
             列的值为 [2,3,4,5], 1
             列的值 [4,6,8,-10] 后跟 2
             , 和 5
             这是一个示例,展示了如何使用切片从矩阵中获取行和列数据。在示例中,我们正在打印 1
             行,对于列,我们需要第一、第二和第三列。为了得到我们使用的输出:M1[1:3, 1:4]

            import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[1:3, 1:4]) # For 1:3, it will give first and second row. #The columns will be taken from first to third. [[ 6 9 -12] [ 8 12 16]]

            示例:打印所有行和第三列

            import numpy as np
            M1 = np.array([[2, 4, 6, 8, 10], 
                [3, 6, 9, -12, -15],
                [4, 8, 12, 16, -20],
                [5, -10, 15, -20, 25]])
            print(M1[:,3]) # This will print all rows and the third column data.
            [  8 -12  16 -20]
            

            示例:打印第一行和所有列

            import numpy as np
            M1 = np.array([[2, 4, 6, 8, 10], 
                [3, 6, 9, -12, -15],
                [4, 8, 12, 16, -20],
                [5, -10, 15, -20, 25]])
            print(M1[:1,]) # This will print first row and all columns
            [[ 2  4  6  8 10]]
            

            示例:打印前三行和前两列

            import numpy as np
            M1 = np.array([[2, 4, 6, 8, 10], 
                [3, 6, 9, -12, -15],
                [4, 8, 12, 16, -20],
                [5, -10, 15, -20, 25]])
            print(M1[:3,:2])
            [[2 4]
             [3 6]
             [4 8]]
            

            访问 NumPy 矩阵

            我们已经看到了切片是如何工作的。考虑到这一点,我们将如何从矩阵中获取行和列。

            打印矩阵的行

            在示例中将打印矩阵的行。

            import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]]) print(M1[0]) #first row print(M1[1]) # the second row print(M1[-1]) # -1 will print the last row [3 6 9] [ 5 -10 15] [ 4 8 12] 要获取最后一行,您可以使用索引或 -1。例如,矩阵有 3 行,

            所以 M1[0] 会给你第一行,

            M1[1] 会给你第二行

            M1[2] 或 M1[-1] 会给你第三行或最后一行。

            打印矩阵的列

            import numpy as np
            M1 = np.array([[2, 4, 6, 8, 10], 
                [3, 6, 9, -12, -15],
                [4, 8, 12, 16, -20],
                [5, -10, 15, -20, 25]])
            print(M1[:,0]) # Will print the first Column
            print(M1[:,3]) # Will  print the third Column
            print(M1[:,-1]) # -1 will give you the last column
            [2 3 4 5]
            [  8 -12  16 -20]
            [ 10 -15 -20  25]
            

            总结:

            • Python 矩阵是存储在行和列中的专用二维矩形数据数组。矩阵中的数据可以是数字、字符串、表达式、符号等。矩阵是可用于数学和科学计算的重要数据结构之一。
            • Python 没有直接的方法来实现矩阵数据类型。可以使用嵌套列表数据类型和使用 numpy 库来创建 Python 矩阵。
            • python 库 Numpy 有助于处理数组。与列表相比,Numpy 处理数组的速度要快一些。
            • 可以做的矩阵运算有加法、减法、乘法、转置、读取矩阵的行、列、对矩阵进行切片等。
            • 要添加两个矩阵,您可以使用 numpy.array() 并使用 (+) 运算符添加它们。
            • 要将它们相乘,您可以使用 numpy dot() 方法。 Numpy.dot() 是矩阵 M1 和 M2 的点积。 Numpy.dot() 处理二维数组并执行矩阵乘法。
            • 矩阵的转置是通过将行更改为列,将列更改为行来计算的。 Numpy 的 transpose() 函数可用于计算矩阵的转置。
            • 矩阵切片将根据给定的开始/结束索引返回元素。