详解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 相关文章推荐
Python操作json数据的一个简单例子
Apr 17 Python
python网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
Python的Django框架中的表单处理示例
Jul 17 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
对Python _取log的几种方式小结
Jul 25 Python
Django项目后台不挂断运行的方法
Aug 31 Python
python 变量初始化空列表的例子
Nov 28 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Selenium常见异常解析及解决方案示范
Apr 10 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
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
深入分析js中的constructor和prototype
2012/04/07 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
JS简单获得节点元素的方法示例
2018/02/10 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
Javascript的this详解
2019/03/23 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
用实例说明python的*args和**kwargs用法
2013/11/01 Python
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python之PyUnit单元测试实例
2014/10/11 Python
Python 字典dict使用介绍
2014/11/30 Python
python3学生名片管理v2.0版
2018/11/29 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python三引号输出方法
2019/02/27 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python 数据类型强制转换的总结
2021/01/25 Python
《祁黄羊》教学反思
2014/04/22 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
远程培训的心得体会
2014/09/01 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js