1. 定义ndarray和matrix

from numpy import *a = mat([[1,2],[3,4]])
b = mat([[5,6],[7,8]])
c = array([1,2],[3,4])
d = array([5,6],[7,8])

看看输出他们会不会有什么区别

print(a)
print(c)>>[[1 2][3 4]] [[1 2][3 4]]
#发现输出的matrix和array是一模一样的

print(type(a))
print(type(c))>> <class 'numpy.matrix'><class 'numpy.ndarray'>

2. ndarray可以是任意维数,matrix只能是2维

A = array([[[1,2]]]) #正常不报错
B = mat([[[1,2]]])   #报错>>ValueError: matrix must be 2-dimensional

3. 乘法

3.1 ndarray

3.1.1 叉乘

print(c)
print(d)
print(np.dot(c,d))>>[[1 2][3 4]][[5 6][7 8]][[19 22][43 50]]
#可以看出ndarray也可以像矩阵一样进行叉乘,但需要满足矩阵叉乘的条件(第一个矩阵的列数等于第二个矩阵的行数)

3.1.2 普通乘法

print(c)
print(d)
print(c*d)>>[[1 2][3 4]]
[[5 6][7 8]]
[[ 5 12][21 32]]
#普通乘法是对应位置元素相乘

3.2 matrix

3.2.1 叉乘

print(a)
print(b)
print(np.dot(a,b))>>[[1 2][3 4]][[5 6][7 8]][[19 22][43 50]]
#矩阵叉乘

3.2.2 普通乘法

print(a)
print(b)
print(a*b)>>[[1 2][3 4]][[5 6][7 8]][[19 22][43 50]]
#这里发现对于矩阵运算符"*"直接对应的是叉乘,和np.dot()效果相同

print(a)
print(b)
print(np.multiply(a,b))>>[[1 2][3 4]][[5 6][7 8]][[ 5 12][21 32]]
#如果非要对矩阵进行普通乘法,可以通过np.multiply()实现

那么ndarray和matrix能否混合做乘法呢,结果是点乘还是叉乘呢?

print(a)
print(b)
print(a*d)>>[[1 2][3 4]]
[[5 6][7 8]]
[[19 22][43 50]]
#可以对matrix和ndarray进行混合乘法,这里的运算符"*"是叉乘

当然啦也可以通过np.multiply()对matrix和ndarray进行点乘

print(a)
print(b)
print(np.multiply(a,d))>>[[1 2][3 4]][[5 6][7 8]][[ 5 12][21 32]]

4. ndarray和matrix互相转换

4.1 matrix → ndarray

使用matrix对象的A属性或者np.asarray()方法

e = a.A
f = np.asarray(a)
print(type(e))
print(e)
print(type(f))
print(f)>><class 'numpy.ndarray'>
[[1 2][3 4]]
<class 'numpy.ndarray'>
[[1 2][3 4]]
#这两种方法都可以将matrix转化为ndarray

但是需要注意注意通过转化得到的ndarray(在这里是e和f)和原始matrix(这里是a)共享内存空间,修改了a之后e和f的值也会被修改

a[1,1] = 2
print(e)
print(f)>>[[1 2][3 2]]
[[1 2][3 2]]
#在修改了a中元素的值后e,f的值都随之改变

当然了,在改变e或f的值后,a的值也会随之改变

e[1,1] = 3
print(a)>>[[1 2][3 3]]

4.2 ndarray → matrix

使用np.asmatrix()方法

e = np.asmatrix(c)
print(e)>>[[1 2][3 4]]

同样的,通过转化得到的matrix和原始ndarray共享内存空间

5. ndarray和matrix的其他区别

5.1 matrix更多的操作方法

matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H f得到共轭矩阵, 加 .I 得到逆矩阵。

5.2 **运算符

** 运算符的作用也不一样 :因为a是个matrix,所以a**2返回的是a*a,相当于矩阵相乘。而c是array,c**2相当于,c中的元素逐个求平方

5.3 matrix维数总保持2维

ndarray与matrix的最大的不同是,在做归约运算时,ndarray的维数会发生变化,但matrix总是保持为2维。例如下面求对行求平均值的运算

print("matrix")
print(a)
print(a.mean(1))
print("ndarray")
print(c)
print(c.mean(1))>>matrix
[[1 2][3 4]]
[[1.5][3.5]]
ndarray
[[1 2][3 4]]
[1.5 3.5]

参考:https://blog.csdn.net/lylclz/article/details/79843437

转载于:https://www.cnblogs.com/RB26DETT/p/10974966.html

python中ndarray和matrix相关推荐

  1. python中ndarray对象_numpy基础——ndarray对象

    numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的. ndarray对象是用于存放同类型元素的多维数组,是numpy中的基本对象之一,另 ...

  2. python中ndarray对象实例化_Python —— 实例化ndarray对象

    ndarray(全称The N-dimensional array)是存储着相同类型和大小的元素的多维数组.数组的维度和每个数组中的元素是由shape来决定的.数组中的元素类型是由dtype决定的.与 ...

  3. python中ndarray除_python科学计算_numpy_ndarray

    ndarray:n-dimensional array object,即多维数组对象,是python自带的array对象的扩展,array对象和list对象的区别是array对象的每一个元素都是数值, ...

  4. python中ndarray是什么意思_什么是Numpy的ndarray

    首先,Numpy的核心是ndarray. 然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimentions),也可简单理解为数组里面嵌套数 ...

  5. python中ndarray如何生成单独的记事本文件_NumPy-快速处理数据--ndarray对象--数组的创建和存取...

    本文摘自<用Python做科学计算>,版权归原作者所有. NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了 ...

  6. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象

    Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...

  7. python中ndarray对象_NumPy - Ndarray 对象

    NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同类型的元素集合. 可以使用基于零的索引访问集合中的项目. ndarray中的每个元素在内存中使用相同大小的块. ...

  8. python中ndarray对象_学习python的第二十二天(numpy模块(对矩阵的处理,ndarray对象)

    6.12自我总结 一.numpy模块 import numpy as np约定俗称要把他变成np 1.模块官方文档地址 2.创建矩阵 1.np.array import numpy as np #创建 ...

  9. python中ndarray对象_NumPy Ndarray 对象

    NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放 ...

最新文章

  1. FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法
  2. Linux动态频率调节系统CPUFreq
  3. SAP UI5中的同步请求和异步请求
  4. 【学习生活杂谈】学习记录
  5. 车联网发展对汽车经销商的影响
  6. java中解释命令_闲来无事可来了解下Java中Javadoc命令的用法
  7. python输出语句格式 f_Python基础之输出格式和If判断
  8. windows下编译可在visual studio中调试的FFmpeg
  9. 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
  10. python音频识别_音频识别和比较
  11. 单片机c语言程序编写歌谱,51单片机播放音乐简谱的函数库
  12. 固定资产管理模式的演变历程
  13. R语言数据分析之二-《R语言判断相关性-excel文件xlsx文件》
  14. Vieux-部分型号iPhone\iPad\iPod降级工具使用教程
  15. 推荐网络带宽控制软件Netlimiter
  16. 新生儿小名大全:农历三月出生的女孩小名
  17. 智能影视站系统 光线 CMS1.5 正式版
  18. Charles的基本使用及教程
  19. 【距离产生美xp主题】_8.30
  20. 密码学之对称加密体系(2):AES、SM4的 S 盒具体算法的实现

热门文章

  1. linux下管理交换分区
  2. ngx_lua_API 指令详解(三)怎样理解 cosocket指令
  3. jquery文本折叠
  4. 40款奇特的名片设计,吸引大家的眼球《上篇》
  5. 《0 bug ---- C/C++商用工程之道》目录
  6. 用JScript.net写.net应用程序
  7. 动网论坛Ver 7.1.0 Sp1
  8. autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别
  9. 数据结构C语言实现课后第1-2章答案
  10. 转帖一篇:截取密码(VC++)学习消息VC++的好处