Python数据科学|Numpy简易教程5——创建NumPy矩阵

创建NumPy矩阵 【Python数据科学|Numpy简易教程5——创建NumPy矩阵】NumPy对于多维数组的运算,默认情况下并不进行矩阵运算。如果需要对数组进行矩阵运算,则可以调用相应的函数。
NumPy中,矩阵是ndarray的子类。
NumPy中,数组和矩阵有着重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其他对象都是在它们之上构建的。
矩阵是继承自NumPy数组对象的二维数组对象。与数学概念中的矩阵一样,NumPy中的矩阵也是二维的。
1. 创建矩阵
可以使用matmatrix以及bmat函数来创建矩阵。使用mat函数创建矩阵时,若输入matrixndarray对象,则不会为它们创建副本。因此,调用mat函数和调用matrix(data, copy=False)等价。
案例:创建矩阵

# 导入NumPy库 import numpy as np # 使用分号隔开数据 matr1 = np.mat("1 2 3; 4 5 6; 7 8 9") print('创建的矩阵为:',matr1) # 使用列表创建矩阵 matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]]) print('创建的矩阵为:',matr2)

创建的矩阵为: [[1 2 3] [4 5 6] [7 8 9]] 创建的矩阵为: [[1 2 3] [4 5 6] [7 8 9]]

2. 创建分块矩阵
很多时候会根据小的矩阵创建大的矩阵,即将小矩阵组合成大矩阵。在NumPy中,可以使用bmat分块矩阵(block matrix)函数实现。
案例:创建分块矩阵
arr1 = np.eye(3) print('创建的数组1为:',arr1)arr2 = 3*arr1 print('创建的数组2为:',arr2)print('创建的矩阵为:',np.bmat("arr1 arr2; arr1 arr2"))

创建的数组1为: [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] 创建的数组2为: [[3. 0. 0.] [0. 3. 0.] [0. 0. 3.]] 创建的矩阵为: [[1. 0. 0. 3. 0. 0.] [0. 1. 0. 0. 3. 0.] [0. 0. 1. 0. 0. 3.] [1. 0. 0. 3. 0. 0.] [0. 1. 0. 0. 3. 0.] [0. 0. 1. 0. 0. 3.]]

3. 矩阵计算
在NumPy中,矩阵计算是针对整个矩阵中的每个元素进行的。与使用for循环相比,其在运算速度上更快。
案例:矩阵计算
matr1 = np.mat("1 2 3; 4 5 6; 7 8 9")#创建矩阵 print('创建的矩阵为:',matr1)matr2 = matr1*3#矩阵与数相乘 print('创建的矩阵为:',matr2) print('矩阵相加结果为:',matr1+matr2)#矩阵相加 print('矩阵相减结果为:',matr1-matr2)#矩阵相减 print('矩阵相乘结果为:',matr1*matr2)#矩阵相乘 print('矩阵对应元素相乘结果为:',np.multiply(matr1,matr2))

创建的矩阵为: [[1 2 3] [4 5 6] [7 8 9]] 创建的矩阵为: [[ 369] [12 15 18] [21 24 27]] 矩阵相加结果为: [[ 48 12] [16 20 24] [28 32 36]] 矩阵相减结果为: [[ -2-4-6] [ -8 -10 -12] [-14 -16 -18]] 矩阵相乘结果为: [[ 90 108 126] [198 243 288] [306 378 450]] 矩阵对应元素相乘结果为: [[31227] [ 4875 108] [147 192 243]]

4. 矩阵属性
除了能够实现各类运算外,矩阵还有其特有的属性。
属性 说明
T 返回自身的转置
H 返回自身的共轭转置
I 返回自身的逆矩阵
A 返回自身数据的2维数组的一个视图
案例:矩阵的属性
print('矩阵转置结果为:',matr1.T)#转置 print('矩阵共轭转置结果为:',matr1.H)#共轭转置(实数的共轭就是其本身) print('矩阵的二维数组结果为:',matr1.A)#返回二维数组的视图 print('矩阵的逆矩阵结果为:',matr1.I)#逆矩阵

矩阵转置结果为: [[ 21 -1] [ 2 -12] [ 301]] 矩阵共轭转置结果为: [[ 21 -1] [ 2 -12] [ 301]] 矩阵的二维数组结果为: [[ 223] [ 1 -10] [-121]] 矩阵的逆矩阵结果为: [[ 1. -4. -3.] [ 1. -5. -3.] [-1.6.4.]]

    推荐阅读