Numpy中矩阵和数组的区别
时间:2019-10-17
本文章向大家介绍Numpy中矩阵和数组的区别,主要包括Numpy中矩阵和数组的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
矩阵(Matrix)和数组(Array)的区别主要有以下两点:
- 矩阵只能为2维的,而数组可以是任意维度的。
- 矩阵和数组在数学运算上会有不同的结构。
代码展示
1.矩阵的创建
- 采用mat函数创建矩阵
class numpy.mat(data, dtype=None)
(注释:Unlike matrix, asmatrix does not make a copy if the input is already a matrix or an ndarray. Equivalent to matrix(data, copy=False).这句话的含义也就是说,当传入的参数为一个矩阵或者ndarray的数组时候,返回值是和传入参数相同的引用,也就是当传入参数发生改变时候,返回值也会相应的改变。相当于numpy.matrix(data, copy=False))
import numpy as np
e = np.array([[1, 2], [3, 4]]) # 传入的参数为ndarray时
# e= np.matrix([[1, 2], [3, 4]]) # 传入的参数为矩阵时
print(e)
print('e的类型:', type(e))
print('---'*5)
e1 = np.mat(e)
print(e1)
print('e1的类型:', type(e1))
print('---'*5)
print('改变e中的值,分别打印e和e1')
# 注意矩阵和ndarray修改元素的区别
e[0][0] = 0 # 传入的参数为ndarray时
# e[0, 0] = 0 # 传入的参数为矩阵时
print(e)
print(e1)
print('---'*5)
[[1 2] [3 4]] e的类型: <class 'numpy.matrix'> --------------- [[1 2] [3 4]] e1的类型: <class 'numpy.matrix'> --------------- 改变e中的值,分别打印e和e1 [[0 2] [3 4]] [[0 2] [3 4]] ---------------
- 采用matrix函数创建矩阵
class numpy.matrix(data, dtype=None, copy=True)
(注释:Returns a matrix from an array-like object, or from a string of data. A matrix is a specialized 2-D array that retains its 2-D nature through operations. It has certain special operators, such as *
(matrix multiplication) and **
(matrix power).)
import numpy as np e = np.array([[1, 2], [3, 4]]) # e = '1 2;3 4' # 通过字符串创建矩阵 e1 = np.matrix(e) # 传入的参数为矩阵时 print(e1) print('e1的类型:', type(e1)) print('---'*5) print('改变e中的值,分别打印e和e1') e[0][0] = 0 print(e) print(e1) print('---'*5)
[[1 2] [3 4]] e1的类型: <class 'numpy.matrix'> --------------- 改变e中的值,分别打印e和e1 [[0 2] [3 4]] [[1 2] [3 4]] ---------------
2.数组的创建
- 通过传入列表创建
- 通过range()和reshape()创建
- linspace()和reshape()创建
- 通过内置的一些函数创建
import numpy as np e = [[1, 2], [3, 4]] e1 = np.array(e) print(e) n = np.arange(0, 30, 2) # 从0开始到30(不包括30),步长为2 n = n.reshape(3, 5) print(n) o = np.linspace(0, 4, 9) o.resize(3, 3) print(o) a = np.ones((3, 2)) print(a) b = np.zeros((2, 3)) print(b) c = np.eye(3) # 3维单位矩阵 print(c) y = np.array([4, 5, 6]) d = np.diag(y) # 以y为主对角线创建矩阵 print(d) e = np.random.randint(0, 10, (4, 3)) print(e)
--------------- [[1, 2], [3, 4]] [[ 0 2 4 6 8] [10 12 14 16 18] [20 22 24 26 28]]
[[0. 0.5 1. ] [1.5 2. 2.5] [3. 3.5 4. ]]
[[1. 1.] [1. 1.] [1. 1.]]
[[0. 0. 0.] [0. 0. 0.]]
[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
[[4 0 0] [0 5 0] [0 0 6]]
[[3 0 2] [1 5 1] [9 4 7] [5 8 9]]
3.矩阵和数组的数学运算
- 矩阵的乘法和加法
矩阵的乘法和加法和线性代数的矩阵加法和乘法一致,运算符号也一样用*,**表示平方,例如e**2 =e*e。
- 数组的加法和乘法
数组的乘法和加法为相应位置的数据乘法和加法。
原文地址:https://www.cnblogs.com/wenshinlee/p/11694885.html
- C#CreateGraphics方法的三种实现方式
- 一斤代码深入理解系列(四):微信小程序和服务器通信-WebSocket
- linux学习第十四篇:查看磁盘,文件大小命令:df,du;磁盘分区
- 二叉树的性质和常用操作代码集合
- linux学习第十五篇:磁盘格式化,磁盘挂载,手动增加swap空间
- 《Java程序设计基础》 第8章手记Part 2
- 备忘录模式
- 《Java程序设计基础》 第8章手记Part 1
- 你很有想法,跟我学做菜吧No.3
- 《数据结构》 定长顺序串常用操作代码集合
- 一斤代码深入理解系列(七):微信小程序中使用微信风格样式库-WeUI
- 餐厅老板要累疯了No.2
- linux学习第十九篇:压缩介绍,gzip,bzip2,xz压缩工具
- 区块链?黑人问号?NO.1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux初始化系统盘后重新挂载数据盘方法
- 在页面部分没有发现字符集声明,请增加该声明
- Linux使用Sudo委派权限
- linux实现定时备份mysql数据库的简单方法
- linux确认已经卸载数据盘并可以新建自定义镜像
- 在Linux中查看进程占用的端口号
- Linux里Makefile是什么?它是如何工作的?
- 详解Linux文件系统:ext4及更高版本
- Linux设置虚拟内存的教学与实战教程
- 详解Linux服务器状态、性能相关命令
- 【s3cmd】给s3cmd加点debug日志再编一个
- Linux获取当前脚本真实路径的方法
- 短视频商城源码,商城左侧菜单栏网页模板
- 谈一谈Linux系统重要的子目录问题
- Tensorflow 2.x Java api的maven包怎么找