Python 矩阵:转置、乘法、NumPy 数组示例

什么是 Python 矩阵?

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

怎么办? Python 矩阵有效吗?

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

Python 矩阵

步骤1) 它显示了一个 2×2 矩阵。它有两行和两列。矩阵内的数据是数字。第 2 行的值为 1、2,3,第 2 行的值为 4,5、1。列(即 col2,4)的值为 2、3,5,第 XNUMX 列的值为 XNUMX、XNUMX。

步骤2) 它显示了一个 2×3 矩阵。它有两行和三列。第一行(即 row1)中的数据具有值 2,3,4、2、5,6,7,row1 具有值 2,5、2、3,6。列 col3 具有值 4,7、XNUMX,colXNUMX 具有值 XNUMX、XNUMX,colXNUMX 具有值 XNUMX、XNUMX。

类似地,你可以将数据存储在 nxn 矩阵中 Python矩阵上可以进行很多运算,例如加法、减法、乘法等等。

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

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

  • 创建一个 Python 使用嵌套列表数据类型的矩阵
  • 创建 Python 矩阵使用来自 Python Numpy 包

创建 Python 使用嵌套列表数据类型的矩阵

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

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

创建 Python 使用嵌套列表的矩阵

  • 该矩阵有 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 矩阵使用列表。

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

示例:打印矩阵

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])

输出:

-6
4
21

示例 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]

使用嵌套列表添加矩阵

我们可以轻松地将两个给定的矩阵相加。这里的矩阵将采用列表形式。让我们研究一个小心添加给定矩阵的示例。

矩阵 1:

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

矩阵2:

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

最后将初始化一个矩阵来存储 M1 + M2 的结果。

矩阵3:

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 矩阵使用来自 Python Numpy 包

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]]

矩阵 Opera使用 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]。
  • 如果没有传递末尾,则将作为数组的长度。
  • 如果开始/结束有负值,则切片将从数组的末尾进行。

在我们对矩阵进行切片之前,让我们首先了解如何对简单数组应用切片。

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。0th 行为 [2,4,6,8,10],1st 行为 [3,6,9,-12,-15],后跟 2nd 4th 和5th 轴车削中心rd.

矩阵M1有5列。索引从0开始到4。0th 列的值为 [2,3,4,5],1st 列的值为 [4,6,8,-10],后跟 2nd, 3rd, 4th和5th.

以下示例展示了如何使用切片从矩阵中获取行和列数据。在本例中,我们打印 1st 4th 和5th 轴车削中心nd 对于行,对于列,我们需要第一、第二和第三列。为了获得该输出,我们使用了: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]

总结

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