矩阵
创建矩阵
import numpy as np
if __name__ == '__main__':
# 使用mat函数创建矩阵
matr1 = np.mat("1 2 3;4 5 6;7 8 9")
print(matr1)
print("shape:", matr1.shape)
print("------------------------------")
# 使用matrix函数创建矩阵
matr2 = np.matrix([[123], [456], [789]])
print(matr2)
print("shape:", matr2.shape)
print("------------------------------")
# 使用bmat函数创建矩阵
bmat = np.bmat("matr1 matr2; matr1 matr2")
print(bmat)
print("shape:", bmat.shape)
运行结果:
矩阵运算
import numpy as np
if __name__ == '__main__':
matr1 = np.mat("1 2 3;4 5 6;7 8 9")
matr2 = np.matrix([[123], [456], [789]])
# 矩阵不数相乘
print(matr1 * 3)
print("-------------------")
# 矩阵相加减
print(matr1 + matr2)
print("-------------------")
# 矩阵相乘
print(matr1 * matr2)
print("-------------------")
# 矩阵对应元素相乘
print(np.multiply(matr1, matr2))
print("-------------------")
运行结果:
线性代数
Numpy数组间的运算只是相对元素间的运算。可以用numpy.dot和numpy.transpose迚行矩阵乘法运算和矩阵转置。优点是避免对数据的遍历。
解方程组:
import numpy as np
if __name__ == '__main__':
A = np.matrix([[3, 6, 5], [1, -3, 2], [5, -1, 4]])
B = np.matrix([[12], [-2], [10]])
x = A ** (-1) * B
print(x)
运行结果:
ufunc函数
全称通用函数(universal function),是一种能够对数组中所有元素迚行操作的函数。
- 四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别迚行四则运算,所以形状必须相同。
- 比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
- 逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”。运算结果返回布尔值。
ufunc函数的广播机制
广播(broadcasting)是指不同形状的数组之间执行算术运算的斱式。需要遵循4个原则。
- 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。
- 输入数组的shape是输入数组shape的各个轴上的最大值。
- 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。
- 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。