python中ndarray和matrix
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相关推荐
- python中ndarray对象_numpy基础——ndarray对象
numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的. ndarray对象是用于存放同类型元素的多维数组,是numpy中的基本对象之一,另 ...
- python中ndarray对象实例化_Python —— 实例化ndarray对象
ndarray(全称The N-dimensional array)是存储着相同类型和大小的元素的多维数组.数组的维度和每个数组中的元素是由shape来决定的.数组中的元素类型是由dtype决定的.与 ...
- python中ndarray除_python科学计算_numpy_ndarray
ndarray:n-dimensional array object,即多维数组对象,是python自带的array对象的扩展,array对象和list对象的区别是array对象的每一个元素都是数值, ...
- python中ndarray是什么意思_什么是Numpy的ndarray
首先,Numpy的核心是ndarray. 然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimentions),也可简单理解为数组里面嵌套数 ...
- python中ndarray如何生成单独的记事本文件_NumPy-快速处理数据--ndarray对象--数组的创建和存取...
本文摘自<用Python做科学计算>,版权归原作者所有. NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了 ...
- python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象
Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...
- python中ndarray对象_NumPy - Ndarray 对象
NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同类型的元素集合. 可以使用基于零的索引访问集合中的项目. ndarray中的每个元素在内存中使用相同大小的块. ...
- python中ndarray对象_学习python的第二十二天(numpy模块(对矩阵的处理,ndarray对象)
6.12自我总结 一.numpy模块 import numpy as np约定俗称要把他变成np 1.模块官方文档地址 2.创建矩阵 1.np.array import numpy as np #创建 ...
- python中ndarray对象_NumPy Ndarray 对象
NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放 ...
最新文章
- FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法
- Linux动态频率调节系统CPUFreq
- SAP UI5中的同步请求和异步请求
- 【学习生活杂谈】学习记录
- 车联网发展对汽车经销商的影响
- java中解释命令_闲来无事可来了解下Java中Javadoc命令的用法
- python输出语句格式 f_Python基础之输出格式和If判断
- windows下编译可在visual studio中调试的FFmpeg
- 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
- python音频识别_音频识别和比较
- 单片机c语言程序编写歌谱,51单片机播放音乐简谱的函数库
- 固定资产管理模式的演变历程
- R语言数据分析之二-《R语言判断相关性-excel文件xlsx文件》
- Vieux-部分型号iPhone\iPad\iPod降级工具使用教程
- 推荐网络带宽控制软件Netlimiter
- 新生儿小名大全:农历三月出生的女孩小名
- 智能影视站系统 光线 CMS1.5 正式版
- Charles的基本使用及教程
- 【距离产生美xp主题】_8.30
- 密码学之对称加密体系(2):AES、SM4的 S 盒具体算法的实现
热门文章
- linux下管理交换分区
- ngx_lua_API 指令详解(三)怎样理解 cosocket指令
- jquery文本折叠
- 40款奇特的名片设计,吸引大家的眼球《上篇》
- 《0 bug ---- C/C++商用工程之道》目录
- 用JScript.net写.net应用程序
- 动网论坛Ver 7.1.0 Sp1
- autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别
- 数据结构C语言实现课后第1-2章答案
- 转帖一篇:截取密码(VC++)学习消息VC++的好处