Python—NumPy数值计算基础2
NumPy矩阵以及通用函数
1)创建NumPy矩阵
创建矩阵可以采用以下函数:
| 函数 | 说明 |
|---|---|
| mat() | 创建矩阵(若输入为matrix或者ndarray对象,不创建副本) |
| matrix() | 创建矩阵,matrix(data,copy=False)则与mat()作用相同 |
| bmat() | 创建分块矩阵(block matrix) |
首先,引入NumPy库
import numpy as np #引入NumPy库
1.使用mat()函数创建矩阵
A = np.mat([[1, 2, 3], [4, 5, 6]]) #使用mat()函数创建矩阵
print(A)
A1 = np.mat("1,2,3;4,5,6") #和上面一种方式表达相同
print(A1)
上述两种表达方式的输出结果都是

2.使用matrix()函数创建矩阵
B = np.matrix("1,2,3;4,5,6") #使用matrix()函数创建矩阵
print(B)
其输出结果为

3.使用bmat()函数创建矩阵
C = np.bmat("A,B") # 使用bmat()函数创建建分块矩阵
print(C)
得到输出结果

需要注意的是,在NumPy中,矩阵的运算都是对每个元素来运算的,比for循环的执行速度更快。
2)NumPy矩阵运算
D0 = B.T #转置运算
D1 = A * 3 # 矩阵与数相乘
D2 = A + B # 矩阵相加
D3 = A - B # 矩阵相减
D4 = A * C # 矩阵相乘
D5 = np.multiply(A, B) # 矩阵对应元素相乘
矩阵特有的属性
| 属性 | 说明 |
|---|---|
| T | 矩阵的转置 |
| I | 矩阵的求逆,得到逆矩阵 |
| H | 矩阵的共轭转置 |
| A | 返回矩阵的视图 |
3)NumPy的通用函数(ufunc函数)
1.数组的四则运算
数组的四则运算和数值运算的四则运算相同,也保留了四则运算的运算符。需要注意的是,参与运算的数组其shape必须一样。
import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6])
print("数组相加",x + y) #数组相加
print("数组相减",x - y) #数组相减
print("数组相乘",x * y) #数组相乘
print("数组相除",x / y) #数组相除
print("数组幂运算",x ** y) #数组幂运算
2.数组的比较运算
比较运算,是通过逐一比较两个数组中的元素值,并将比较结果存入对应的数组内。比较的结果采用False和True表示。
import numpy as np
x = [1, 2, 3]
x = [2, 3, 4]
print("数组比较结果为:",x == y) #输出比较结果的数组
print("数组比较结果为:",x != y)
print("数组比较结果为:",x >= y)
print("数组比较结果为:",x <= y)
print("数组比较结果为:",x > y)
print("数组比较结果为:",x < y)
3.广播机制
当参与运算的两个数组shape不一样时,会采用广播机制。广播机制会对数组进行扩展,使数组的shape属性值一样,这样便可以进行运算。
遵循的原则如下:
1.当输入的数组某一维度为1,则沿着此轴运算时采用此轴的第一组值。
2.所有输入的数组向shape最长的看齐,shape不足的部分在前面补1。
3.输出数组的shape是输入shape的各个维度的最大长度。
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]]
arr2 = np.array([0, 1, 2])
print(arr1 +arr2)
系统会将[0,1,2]及进行copy得到[[01,2],[0,1,2]]),从而输出结果为
本文深入探讨Python中的NumPy库,重点介绍如何创建矩阵,包括使用mat()、matrix()和bmat()函数,以及NumPy的通用函数(ufunc)。详细解析了矩阵运算的特点和广播机制的工作原理,揭示了在不同形状数组运算时的规则和效率提升策略。
2137

被折叠的 条评论
为什么被折叠?



