详解numpy矩阵的创建与数据类型


Posted in Python onOctober 18, 2019

Numpy是python常用的一个类库,在python的使用中及其常见,广泛用在矩阵的计算中,numpy对矩阵的操作与纯python比起来速度有极大的差距。

一、 构造矩阵

矩阵的构造可以有多种方法:

1.使用python中的方法构造矩阵

- 生成一维矩阵

# 使用python自带的range()方法生成一个矩阵
a = list(range(100))#range()产生从0-99的一个列表
print(a)

详解numpy矩阵的创建与数据类型

- 生成二维及多维矩阵

# 使用python自带的range()方法生成一个矩阵
a = list([[1,2,3],
     [4,5,6],
     [7,8,9]])
print(a)

2.使用numpy中的方法来生成矩阵

numpy类库中生成的矩阵的数据类型为numpy.ndarray,与python中的列表不同。

(1)array()方法生成矩阵

#numpy入门
import numpy as np
data = [6,7.5,8,0,1]
data1 = [[1,2,3],[4,5,6]]
arr = np.array(data)
arr1 = np.array(data1)
print(arr)
print(arr1)

详解numpy矩阵的创建与数据类型

array()方法可以将一个列表转换为对应维度相同的numpy矩阵。

(2)生成随机矩阵方法rand()和randn()

import numpy as np
#生成一个随机数矩阵
data = np.random.randn(2,3)#是从标准正态分布中返回一个或多个样本值
data1 = np.random.rand(2,3)#随机样本位于[0, 1)中
print(data)
print(data1)

详解numpy矩阵的创建与数据类型

(3)矩阵的加法与乘法,numpy矩阵中矩阵与数字相加或相乘,则数组中每一个元素都执行相加或相乘。

import numpy as np
data = np.random.randn(10)#是从标准正态分布中返回一个或多个样本值
print(data)
print("data * 10 :\n",data*10)#每一个元素乘以十
print("data+data:\n",data+data)#实现数组中每一个位置自加操作

详解numpy矩阵的创建与数据类型

(4)零矩阵

可以用numpy的zeros()方法生成元素值全为0的矩阵。

import numpy as np
data = np.zeros(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.zeros((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.zeros((3,4,3))
print("data2:",data2)#生成一个三维的全零矩阵

详解numpy矩阵的创建与数据类型

(5)一矩阵

同零矩阵一样,numpy中的ones()方法可以生产元素值全为一的矩阵

import numpy as np
data = np.ones(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.ones((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.ones((3,4,3))
print("data2:",data2)

详解numpy矩阵的创建与数据类型

(6)empty()方法

python中也可以使用numpy.empty()方法来生产一些看似是0的数,语法和ones()方法一样

#numpy入门
import numpy as np
data = np.empty(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.empty((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.empty((3,4,3))
print("data2:",data2)

详解numpy矩阵的创建与数据类型

就算是在编译器中显示的值为0,但其实际的值并不是0,只是一个很靠近0的数。

#numpy入门
import numpy as np
data1 = np.empty((3,4))#生成一个三行四列的全零矩阵
print("data1:\n",data1)
print("1/data1:\n",1/data1)

详解numpy矩阵的创建与数据类型

inf表示无穷大的意思,如若data1中数据的值为0的话,在运行的过程中解释器会出错。

#注意:认为np.empty会返回全0数组的想法是不安全的。很多情况下(如前所示),它返回的都是一些未初始化的垃圾值。

(7)arange()方法

类似于range()方法

import numpy as np
a = np.arange(10)
b = np.arange(2,20)
c = np.arange(0,50,5)
print("a:",a)
print("b:",b)
print("c:",c)

当只有一个参数n时表示产生一个从[0?n)的不包含n的一个矩阵

当有两个参数m,n时表示产生一个从[m,n)的不包含n的一个矩阵

当含有三个参数m,n,l时,表示从m开始,每次已l为步长,产生一个矩阵,最大值不超过n

详解numpy矩阵的创建与数据类型

(8)reshape()方法,重新生成矩阵的维度大小

import numpy as np
a = np.arange(10)
print(a)
a=a.reshape(2,5)
print(b)

详解numpy矩阵的创建与数据类型

上例中,将一个一维的十元素矩阵转换成一个两行五列的矩阵。

注意:使用reshape()方法从一维转多维时,一维矩阵的元素个数必须与多维矩阵的相同,也即是上例中的10=2*5,如若不相等的话解释器或出现错误。

(9)一些与矩阵的大小有关的值

import numpy as np
array = np.array([[1,2,3],
         [4,5,6],
         [7,8,9]])
print(array)
print(array.ndim)#维度
print(array.shape)#各维度的值
print(array.size)#元素个数
print(array.dtype)#元素的数据类型

详解numpy矩阵的创建与数据类型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
浅谈python可视化包Bokeh
Feb 07 Python
python学生信息管理系统(初级版)
Oct 17 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
django fernet fields字段加密实践详解
Aug 12 Python
python之yield和Generator深入解析
Sep 18 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
pandas数据处理之绘图的实现
Jun 15 Python
next在python中返回迭代器的实例方法
Dec 15 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 #Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 #Python
python如何将两个txt文件内容合并
Oct 18 #Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 #Python
OpenCV模板匹配matchTemplate的实现
Oct 18 #Python
python处理excel绘制雷达图
Oct 18 #Python
使用Python进行中文繁简转换的实现代码
Oct 18 #Python
You might like
谈谈PHP语法(4)
2006/10/09 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Python中Selenium模块的使用详解
2020/10/09 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
项目经理岗位职责
2013/11/11 职场文书
学习演讲稿范文
2014/05/10 职场文书
物业管理专业求职信
2014/06/11 职场文书
社区反邪教工作方案
2014/06/16 职场文书
社区文艺活动方案
2014/08/19 职场文书
房屋认购协议书
2015/01/29 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL