Python矩阵
时间:2020-02-23 14:43:00 来源:igfitidea点击:
在本教程中,我们将学习Python矩阵。
Python矩阵
要使用Python Matrix,我们需要导入Python numpy模块。
如果您对numpy模块不了解,可以阅读python numpy教程。
Python矩阵用于执行有关矩阵的操作,可用于科学目的,图像处理等。
Python中创建矩阵
在本节中,我们将学习如何在python中创建矩阵。
根据维基百科,矩阵是数字,符号或者表达式的矩形阵列,排列成行和列。
因此,在下面的代码中,我们将初始化各种类型的矩阵。
通常,使用numpy.matix()函数创建矩阵。
我们可以使用numpy.shape来知道矩阵的尺寸。
请参阅以下python矩阵示例代码。
import numpy as np # create 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array print('2x2 matrix is:\n', a) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', a.shape) # using MatLab syntax in string b = np.matrix('[1,2;3,4;5,6]', dtype=np.int32) # limiting the data-type to int print('\n3x2 matrix is:\n', b) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', b.shape) # using numpy.random.rand(row, column) to generate array of random element c = np.matrix(np.random.rand(3, 3), dtype=np.float32) # considering the data-type as float print('\n3x3 random element matrix is:\n', c) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', c.shape)
您将得到如下图所示的输出。
Python矩阵加法
矩阵加法的手动代码足够复杂!多亏了numpy模块,我们可以简单地使用+运算符进行矩阵加法。
因此,在以下示例代码中,我们将看到手动编写附加代码以及使用加号运算符。
import numpy as np # create two 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array b = np.matrix([[5, 6], [7, 8]]) # using array of array result = np.matrix(np.zeros((2,2))) # result matrix print('A matrix :\n', a) print('\nB matrix :\n', b) # traditional code for i in range(a.shape[1]): for j in range(a.shape[0]): result[i, j] = a[i, j] + b[i, j] print('\nManually calculated result :\n', result) # get the result by simply using + operator resultB = a + b print('\nCalculated using matrix + operator :\n', resultB)
以下是python矩阵附加代码的输出。
A matrix : [[1 2] [3 4]] B matrix : [[5 6] [7 8]] Manually calculated result : [[ 6. 8.] [ 10. 12.]] Calculated using matrix + operator : [[ 6 8] [10 12]]
Python矩阵乘法,逆矩阵,矩阵转置
在上一节中,我们讨论了Python Matrix的好处,即它使我们的任务变得简单。
这样,我们可以简单地将两个矩阵相乘,得到矩阵的逆和转置。
正如我们之前看到的,+运算符将两个矩阵相加,这里我们可以简单地使用*运算符将矩阵相乘。
对于矩阵乘法,第一个矩阵中的列数应等于第二个矩阵中的行数。
我们可以使用getI()函数获得矩阵的逆矩阵。
我们可以使用getT()获取矩阵的转置。
让我们看一下矩阵乘法的例子。
import numpy as np # initialize a 3x2 matrix of random values matA = np.matrix(np.random.rand(3, 2)) # print the first matrix print('The first matrix is :\n', matA) # initialize a 2x3 matrix of random values matB = np.matrix(np.random.rand(2, 3)) # print the second matrix print('\nThe second matrix is :\n', matB) # multiply two matrix using * operator result = matA * matB # print the resultant matrix print('\nMatrix multiplication result :\n', result) # get the inverse of the first matrix inverseMatA = matA.getI() print('\nThe inverse of the first matrix is :\n', inverseMatA) # get the transpose matrix of the second matrix transposeMatB = matB.getT() print('\nThe transpose of the second matrix is :\n', transposeMatB)
由于我们使用了随机值。
因此,矩阵的元素将有所不同。
但是,下面的代码输出是在我的计算机上运行的示例。
The first matrix is : [[ 0.88847844 0.01832413] [ 0.08538396 0.20178474] [ 0.92615527 0.8963927 ]] The second matrix is : [[ 0.03454971 0.89908281 0.08825769] [ 0.46224998 0.63173062 0.91734146]] Matrix multiplication result : [[ 0.039167 0.81039161 0.09522454] [ 0.09636365 0.20443036 0.1929165 ] [ 0.44635589 1.398969 0.90403851]] The inverse of the first matrix is : [[ 1.12771189 -0.15722127 0.01239153] [-1.13143853 0.40000541 1.04853336]] The transpose of the second matrix is : [[ 0.03454971 0.46224998] [ 0.89908281 0.63173062] [ 0.08825769 0.91734146]]