2.2 掌握 NumPy 矩阵与通用函数

2.2.1 创建NumPy矩阵

创建NumPy矩阵

1、使用mat函数创建矩阵: matr1 = np.mat(“1 2 3;4 5 6;7 8 9”)
2、使用matrix函数创建矩阵:matr2 = np.matrix([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
使用mat函数创建矩阵时,若输入matrix或ndarray对象,则不会为它们创建副本。因此,调用mat函数与调用matrix(data, copy=False)等价。
3、有很多时候会根据小的矩阵创建大的矩阵,即将小矩阵组合成大矩阵。在NumPy中,可以使用bmat分块矩阵函数实现。
使用bmat函数合成矩阵:np.bmat(“arr1 arr2; arr1 arr2”)

# 2.2.1 创建NumPy矩阵
import numpy as np
# 1、使用mat函数与matrix函数创建矩阵
mat1 = np.mat("1 2 3; 4 5 6; 7 8 9")  # 使用分号隔开数据
print(mat1)
matr1 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
print(matr1)
# 2、使用bmat函数创建矩阵  bmat分块矩阵
arr1 = np.ones((2,2))
arr2 = np.zeros((2,2))
print('arr1\n',arr1)
print('arr2\n',arr2)
arr3 = np.bmat("arr1 arr2; arr2 arr1")
print('arr3\n',arr3)

在这里插入图片描述

矩阵的运算

矩阵与数相乘:matr13
矩阵相加减:matr1±matr2
矩阵相乘:matr1
matr2
矩阵对应元素相乘:np.multiply(matr1,matr2)

# 3、矩阵运算
mat2 = mat1*2
print(mat1)
print(mat2)
print('加\n', mat1+mat2)
print('减\n', mat1-mat2)
print('乘\n', mat1*mat2)
print('对应元素相乘\n', np.multiply(mat1,mat2))

在这里插入图片描述

矩阵的属性

在这里插入图片描述

# 4、查看矩阵的属性
print(mat1)
print(mat1.T)  # 转置
print(mat1.H)  # 共轭转置
print(mat1.I)  # 逆矩阵
print(mat1.A)  # 返回二维数组的视图

在这里插入图片描述

2.2.2 掌握ufunc函数

ufunc函数全称为通用函数(universal function),是一种能够对数组中所有元素进行操作的函数。ufunc函数是针对数组进行操作的,并且都以NumPy数组作为输出,因此不需要对数组中的每一个元素都进行操作。对一个数组进行重复运算时,使用ufunc函数比使用math库中的函数效率要高很多。

1、常用的ufunc函数运算

# 1、常用的ufunc函数运算
x = np.array([1,3,5])
y = np.array([2,3,4])
print(x+y)
print(x-y)
print(x*y)
print(x/y)
# 2、数组的比较运算
print(x<y)
# 3、数组的逻辑运算
print(np.all(x == y)) # np.all()表示逻辑and
print(np.any(x == y)) # np.any()表示逻辑or

在这里插入图片描述

2、ufunc函数的广播机制

广播(broadcasting)是指不同形状的数组之间执行算术运算的方式。需要遵循4个原则。
(1)让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。
(2)输出数组的shape是输入数组shape的各个轴上的最大值。
(3)如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。
(4)当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。
在这里插入图片描述

arr1 = np.array([[0, 0 ,0],[1,1,1],[2,2,2],[3,3,3]])
print(arr1)
arr2 = np.array([1,2,3])
print(arr2)
print('---------\n',arr1+arr2)

arr3 = np.array([1,2,3,4]).reshape((4,1)) # 改成4行1列
print(arr3)
print('---------\n',arr1+arr3)

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清木!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值