numpy矩阵的操作

目录

1 矩阵对象

2 创建矩阵

3 矩阵属性

4 矩阵乘法


1 矩阵对象

在数学上,矩阵(Matrix)是一个按照矩形阵列排列的复数或实数集合,但在NumPy中,矩阵np.matrix是数组np.ndarray的派生类。这意味着矩阵本质上是一个数组,拥有数组的所有属性和方法;同时,矩阵又有一些不同于数组的特性和方法。

  • 首先,矩阵是二维的,不能像数组一样幻化成任意维度,即使展开或切片,返回也是二维的;

  • 其次,矩阵和矩阵、矩阵和数组都可以做加减乘除运算,运算结果总是返回矩阵;

  • 最后,矩阵的乘法不同于数组乘法。

2 创建矩阵

np.mat() 函数用于创建矩阵,它可以接受列表、数组甚至是字符串等形式的参数,还可以使用dtype参数指定数据类型。

import numpy as np
​
print(np.mat([[1, 2, 3], [4, 5, 6]], dtype=np.int32))  # 使用列表创建矩阵
print(np.mat(np.arange(6).reshape((2,3)), dtype=np.int32)) # 使用列表创建矩阵
print(np.mat(np.arange(6).reshape((2,3)))) # 使用数组创建矩阵
print(np.mat('1 4 7; 2 5 8; 3 6 9')) # 使用Matlab风格的字符串创建矩阵

此外,和生成特殊值数组类似,numpy.matlib 子模块()也提供了多个函数用于生成特殊值矩阵和随机数矩阵:

import numpy.matlib as mat # 也可以不用单独导入,直接使用numpy.matlib.mat
print(mat.zeros((2,3))) # 全0矩阵
print(mat.ones((2,3))) # 全1矩阵
print(mat.eye(3)) # 单位矩阵
print(mat.empty((2,3))) # 空矩阵
print(mat.rand((2,3))) # [0,1)区间随机数矩阵
print(mat.randn((2,3))) # 均值0方差1的高斯(正态)分布矩阵

3 矩阵属性

矩阵有几个特有的属性,如转置矩阵、逆矩阵、共轭矩阵、共轭转置矩阵等。

m = np.mat(np.arange(6).reshape((2,3)))
print(m)
print(m.T) # 返回自身的转置矩阵
print(m.H) # 返回自身的共轭转置矩阵
print(m.I) # 返回自身的逆矩阵
print(m.A) # 返回自身数据的视图(ndarray类)

4 矩阵乘法

矩阵运算和数组运算大致相同,只有乘法运算有较大差别。在讲广播和矢量化时,我们已经知道,两个数组相乘就是对应元素相乘,条件是两个数组的结构相同。事实上,即使两个数组的结构不同,只要满足特定条件,也能做乘法运算。

除了对应元素相乘,数组还可以使用 np.dot() 函数相乘。

对于数组而言,使用星号相乘和使用np.dot()函数相乘是完全不同的两种乘法;对于矩阵来说,不管是使用星号相乘还是使用np.dot()函数相乘,结果都是np.dot( )函数相乘的结果,因为矩阵没有对应元素相乘这个概念。np.dot()函数实现的乘法就是矩阵乘法。示例如下:

#数组相乘
a = np.arange(6)
b = np.arange(7,13)
print(a * b)
print(np.dot(a,b))

#矩阵的乘法
m = np.mat(np.arange(6).reshape((2,3)))
print(np.dot(m,m.T))  #m与m的转置相乘

得到:
[ 0  8 18 30 44 60]
160
[[ 5 14]
 [14 50]]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值