matrix() 和 array() 的区别,主要从以下方面说起:

1. 矩阵生成方式不同

import numpy as np

a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]]) a2 = np.array(([1, 2], [3, 4]))
b2 = np.mat(([1, 2], [3, 4])) a3 = np.array(((1,2), (3,4)))
b3 = np.mat(((1,2), (3,4))) b4 = np.mat('1 2; 3 4') print("\n",a1,"\n",b1,"\n",a2,"\n",b2,"\n",a3,"\n",b3,"\n",b4)

结果均为:

 [[1 2]
[3 4]]

上述变化就是将 “[]” 换成“()”。不同之处在于  b4 内用引号、空格和分号来产生矩阵,这个方法只可以在  matrix() 函数中使用,即b4 = np.mat('1 2; 3 4')。不可以写成的 a4 = np.array('1 2; 3 4') 。

2. 矩阵性质不同

matrix()和 array ()后面加上 .T 得到转置。但是matrix()还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵, array()就不可以。

import numpy as np

a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]]) print(a1.T)
print(b1.T)
[[1 3]
[2 4]]
[[1 3]
[2 4]]
import numpy as np
a1 = np.array([[1, 2], [3, 4]])
print(a1.H)

AttributeError: 'numpy.ndarray' object has no attribute 'H'

print(a1.I)

AttributeError: 'numpy.ndarray' object has no attribute 'I'

import numpy as np
b1 = np.mat([[1, 2], [3, 4]]) print(b1.H)
print(b1.I)

[[1 3]
 [2 4]]
[[-2.   1. ]
 [ 1.5 -0.5]]

3. 在矩阵乘法中的不同

array()的乘法是矩阵中对应位置的两个数相乘。

mat()的乘法是矩阵乘法。

import numpy as np

a1 = np.array([[1, 2], [3, 4]])
c1 = np.array([[5,6],[7,8]]) b1 = np.mat([[1, 2], [3, 4]])
d1 = np.mat([[5,6],[7,8]]) print("a1乘c1的结果:",a1*c1)
print("b1乘d1的结果:",b1*d1)

a1乘c1的结果: [[ 5 12]
 [21 32]]
b1乘d1的结果: [[19 22]
 [43 50]]

array()和mat(),若让他们都遵循矩阵乘法,可以用dot()函数。

print(np.dot(a1,c1))
print(np.dot(b1,d1))

[[19 22]
 [43 50]]
[[19 22]
 [43 50]]

矩阵平方:array()的平方是矩阵对应位置数的平方。mat()的平方是矩阵乘积。

print("a1的平方",a1**2)
print("b1的平方",b1**2)
a1的平方 [[ 1  4]
[ 9 16]]
b1的平方 [[ 7 10]
[15 22]]

总结:

array()乘法:*代表点乘(对应元素相乘),dot()代表矩阵乘。

mat()乘法:*代表矩阵乘,multiply()代表点乘。

4. matrix()和array()关于秩的区别

5. array()和mat()之间的转换

array()——>mat():np.asmatrix()

a1 = np.array([[1,2], [3,4]])
a1
array([[1, 2],
[3, 4]])
a2 = np.asmatrix(a1)
a2
matrix([[1, 2],
[3, 4]])

mat()——>array():np.asarray()

b1 = np.mat([[1,2], [3,4]])
b1
matrix([[1, 2],
[3, 4]])
b2 = np.asarray(b1)
b2
array([[1, 2],
[3, 4]])

来自:jeexi

Numpy中matrix()和array()的区别的更多相关文章

  1. Python与线性代数——Numpy中的matrix()和array()的区别

    Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...

  2. numpy中的matrix与array的区别

    Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...

  3. numpy中matrix的特殊属性

    一.matrix特殊属性解释 numpy中matrix有下列的特殊属性,使得矩阵计算更加容易 摘自 NumPy Reference Release 1.8.1 1.1 The N-dimensiona ...

  4. 探求C#.Net中ArrayList与Array的区别 【转】

    ArrayList与Array的区别概述     ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例如 ...

  5. 探求C#.Net中ArrayList与Array的区别

     ArrayList与Array的区别概述     ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例 ...

  6. 在javascript中NodeList和Array的区别及转换方法

    随着深入理解javascript 后对于一些小知识的了解慢慢加深,这里说的是关于nodelist和array的区别,相信你一定用过toarray()方法,但是这里通过js 的方法讲解nodelist ...

  7. Numpy中矩阵和数组的区别

    矩阵(Matrix)和数组(Array)的区别主要有以下两点: 矩阵只能为2维的,而数组可以是任意维度的. 矩阵和数组在数学运算上会有不同的结构. 代码展示 1.矩阵的创建 采用mat函数创建矩阵 c ...

  8. 【转】numpy中 meshgrid 和 mgrid 的区别和使用

    转自:https://www.cnblogs.com/shenxiaolin/p/8854197.html 一.meshgrid函数 meshgrid函数通常使用在数据的矢量化上. 它适用于生成网格型 ...

  9. Python的 numpy中 meshgrid 和 mgrid 的区别和使用

    一.meshgrid函数 meshgrid函数通常使用在数据的矢量化上. 它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对. 示例展示: 由上面的示例展示 ...

随机推荐

  1. asyncio:python3未来并发编程主流、充满野心的模块

    介绍 asyncio是Python在3.5中正式引入的标准库,这是Python未来的并发编程的主流,非常重要的一个模块.有一个web框架叫sanic,就是基于asyncio,语法和flask类似,使用 ...

  2. jenkins+docker+docker-compose持续集成

    一.前期准备 1.宿主机安装docker,传送门 2.宿主机安装JDK,传送门 3.宿主机安装maven,传送门 4.宿主机安装git yum install git 5.宿主机安装jenkins,传 ...

  3. SpringBoot 如何实现自动配置

    SpringMVC 和 SpringBoot 都是基于Spring的,两者推出的时间相差不大,只不过是SpringMVC推出早点. 关于两者,最近看到一个比较通俗的讲法: Spring 最初利用“工厂 ...

  4. 二叉树的相关定义及BST的实现

    一.树的一些概念 树,子树,节点,叶子(终端节点),分支节点(分终端节点): 节点的度表示该节点拥有的子树个数,树的度是树内各节点度的最大值: 子节点(孩子),父节点(双亲),兄弟节点,祖先,子孙,堂 ...

  5. 【模板】多标记 LCT

    代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int mod = 51061 ...

  6. 利用fastjson的一些使用小记

    //Json converter to objectTouBaoTXTpaicResponse touBaoTXTpaicResponse = JSON.parseObject(json.toJSON ...

  7. Practical, Dynamic Visibility for Games(可实现动态显示技术)

    Practical, Dynamic Visibility for Games(可实现动态显示技术) 原文地址 1引言 游戏场景越来越复杂,包含的内容越来越多,动态显示技术很需要. 本文介绍2种互补的 ...

  8. kafka的maxPollIntervalMs设置太小引发的惨案 (转)

    本地启动kafka后,不断报一下信息: 表示本地consumer节点在不断的重新加入group,并且不断伴随着offset commit失败. 具体原因是因为ConsumerCoordinator没有 ...

  9. hdu 6046 hash

    题: OwO http://acm.hdu.edu.cn/showproblem.php?pid=6046 (2017 Multi-University Training Contest - Team ...

  10. ZAP笔记

    1.HTTP自动变成HTTS问题. 在使用OWASP ZAP 2.8.0的时候,如果设置了dynamic ssl certificates,并把正式导入到浏览器的时候 如果ZAP当做代理访问HTTP的 ...