数组和矩阵的区别 —— python 中 array 和 mat 的区别

1. 概述

python中的numpy包下有array(obj)和mat(obj)这两个方法,一个是将对象转为数组,一个是将对象转为矩阵,那么矩阵和数据到底有什么区别呢!

2. 数组和矩阵
  1. Numpy 中矩阵(matrix)必须是 2 维的,但是 numpy 中数组 (ndarrays) 可以是多维的(1D,2D,3D····ND);matrix 相当于是 ndarrays 的一个特例,包含于ndarrays,所以matrix 拥有ndarrays的所有特性。
  2. 在 numpy 中matrix的主要优势是:相对简单的乘法运算符号;例如,a和b是两个matrix,那么 a*b,就是矩阵乘积,a和b必须满足相乘的要求才能进行。
  3. matrix 和 ndarrays 都可以通过objects后面加 .T (或 .transpose())得到其转置。但是 matrix objects 还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵,数组就不可以。
  4. 相反的是在 numpy 里面 ndarrays 遵从逐个元素的运算,所以array:c 和d的c*d运算相当于matlab里面的c.*d运算;如果想要得类似矩阵相乘的结果,则需要 numpy里面的 dot 命令 。
3. 演示
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2019/1/21 10:41
# @Author  : Arrow and Bullet
# @FileName: array_mat.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/qq_41800366

from numpy import *

A = array([1, 2, 3])  # 数组
B = array([1, 2, 3])  # 数组
print(A*B)  # 结果 [1 4 9] 数组相乘
print(dot(A, B))  # 结果 14 结果是数值

A = mat([1, 2, 3])  # 矩阵
B = mat([1, 2, 3])  # 矩阵
print(A*B.T)  # 结果 [[14]] 结果是矩阵

C = array([[1, 2], [3, 4]])
D = array([[1, 2], [3, 4]])
print(C*D)  # 结果 [[ 1  4] [ 9 16]]  各个元素相乘
print(dot(C, D))  # 结果 [[ 7 10][15 22]]  类似矩阵相乘

E = array([[[1, 1], [2, 2]], [[3, 4], [5, 6]]])
print(E)  # 结果 [[[1 1][2 2]][[3 4][5 6]]]
E = mat([[[1, 1], [2, 2]], [[3, 4], [5, 6]]])
#  报错  ValueError: matrix must be 2-dimensional

希望能够帮助到大家,有什么问题可以 直接评论即可,喜欢有用的话可以点个赞让更多的人看到,如果不够详细的话也可以说,我会及时回复的。

猜你喜欢

转载自blog.csdn.net/qq_41800366/article/details/86571304