详解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使用多线程不断刷新网页的方法
Mar 31 Python
Python解析最简单的验证码
Jan 07 Python
TensorFlow saver指定变量的存取
Mar 10 Python
Python3处理HTTP请求的实例
May 10 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
python用什么编辑器进行项目开发
Jun 17 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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与浏览器缓存的分析
2013/06/03 PHP
php while循环得到循环次数
2013/10/26 PHP
php短址转换实现方法
2015/02/25 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
Python中的匿名函数使用简介
2015/04/27 Python
处理Python中的URLError异常的方法
2015/04/30 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
init进程的作用
2015/08/20 面试题
优秀班集体先进事迹材料
2014/05/28 职场文书
爱护公物标语
2014/06/24 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
刑事和解协议书范本
2014/11/19 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers