首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python-Numpy中array和matrix的用法

Python-Numpy中array和matrix的用法

作者头像
用户7886150
修改2021-01-04 10:11:42
修改2021-01-04 10:11:42
1.6K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python中的numpy.bmat

python当中科学运算库numpy可以节省我们很多运算的步骤,但是这里和matlab中又有一点点不一样,matrix和array之间的关系和区别是什么呢? 

array 还是 matrix? 

Numpy 中不仅提供了 array 这个基本类型,还提供了支持矩阵操作的类 matrix,但是一般推荐使用 array: 

很多 numpy 函数返回的是 array,不是 matrix 在 array 中,逐元素操作和矩阵操作有着明显的不同 向量可以不被视为矩阵 具体说来: 

dot(), multiply(),* array:* -逐元素乘法,dot() -矩阵乘法 matrix:* -矩阵乘法,multiply() -逐元素乘法 处理向量 array:形状为 1xN, Nx1, N 的向量的意义是不同的,类似于 A[:,1] 的操作返回的是一维数组,形状为 N,一维数组的转置仍是自己本身 matrix:形状为 1xN, Nx1,A[:,1] 返回的是二维 Nx1 矩阵 高维数组 array:支持大于2的维度 matrix:维度只能为2 属性 array:.T 表示转置 matrix:.H 表示复共轭转置,.I 表示逆,.A 表示转化为 array 类型 构造函数 array:array 函数接受一个(嵌套)序列作为参数——array([[1,2,3],[4,5,6]]) matrix:matrix 函数额外支持字符串参数——matrix("[1 2 3; 4 5 6]") 其优缺点各自如下: 

array 

[GOOD] 一维数组既可以看成列向量,也可以看成行向量。v 在 dot(A,v) 被看成列向量,在 dot(v,A) 中被看成行向量,这样省去了转置的麻烦 [BAD!] 矩阵乘法需要使用 dot() 函数,如: dot(dot(A,B),C) vs ABC [GOOD] 逐元素乘法很简单: A*B [GOOD] 作为基本类型,是很多基于 numpy 的第三方库函数的返回类型 [GOOD] 所有的操作 *,/,+,**,… 都是逐元素的 [GOOD] 可以处理任意维度的数据 [GOOD] 张量运算 

matrix 

[GOOD] 类似与 MATLAB 的操作 [BAD!] 最高维度为2 [BAD!] 最低维度也为2 [BAD!] 很多函数返回的是 array,即使传入的参数是 matrix [GOOD] A*B 是矩阵乘法 [BAD!] 逐元素乘法需要调用 multiply 函数 [BAD!] / 是逐元素操作 当然在实际使用中,二者的使用取决于具体情况。 

二者可以互相转化: 

asarray :返回数组 asmatrix(或者mat) :返回矩阵 asanyarray :返回数组或者数组的子类,注意到矩阵是数组的一个子类,所以输入是矩阵的时候返回的也是矩阵 

以下是一些例子 

import numpy as np

a = np.mat('1 2;3 4')

b = np.mat('4 3;2 1')

print(np.multiply(a,b)) #multiply就是对应元素的相乘

a = np.array([[1,2],[3,4]])

b = np.array([[4,3],[2,1]])

print(a*b)  # 用了*号也是对应元素相乘

x = np.array([[1,2],[3,4]])

y = np.array([[5,6],[7,8]])

v = np.array([9,10])

w = np.array([11,12])

print(v.dot(w))

print(np.dot(v,w))     #这里用dot()就是矩阵的矢量相乘法了

print(x.dot(v))

print(np.dot(x,v))

print(x.dot(y))

print(np.dot(x,y))

结果如下:  

总结:一般来讲都是推荐用array形式,我们要用dot()来计算矩阵之间的乘法。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档