详解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操作csv文件实例详解
Jul 31 Python
Python搜索引擎实现原理和方法
Nov 27 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
连接pandas以及数组转pandas的方法
Jun 28 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
Python pip配置国内源的方法
Feb 14 Python
python实现滑雪者小游戏
Feb 22 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
Python制作一个随机抽奖小工具的实现
Jul 07 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
PHP5+UTF8多文件上传类
2008/10/17 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
Python类属性的延迟计算
2016/10/22 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python函数生成器原理及使用详解
2020/03/12 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
护士求职自荐信范文
2014/03/19 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
Java Socket实现多人聊天系统
2021/07/15 Java/Android
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
Linux中文件的基本属性介绍
2022/06/01 Servers
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript