详解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迭代器和生成器定义与用法示例
Feb 10 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
详解Python中的动态属性和特性
Apr 07 Python
Numpy掩码式数组详解
Apr 17 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
利用Python如何批量更新服务器文件
Jul 29 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
Python递归函数特点及原理解析
Mar 04 Python
python spilt()分隔字符串的实现示例
May 21 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
PHP4实际应用经验篇(6)
2006/10/09 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Python中zip()函数用法实例教程
2014/07/31 Python
python端口扫描系统实现方法
2014/11/19 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python组合无重复三位数的实例
2018/11/13 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
python正则表达式实例代码
2020/03/03 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
自荐信怎么写呢?
2013/12/09 职场文书
大专生自我评价
2014/01/28 职场文书
初中信息技术教学计划
2015/01/22 职场文书
护士个人年终总结
2015/02/13 职场文书
生产实习心得体会范文
2016/01/22 职场文书
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL
win sever 2022如何占用操作主机角色
2022/06/25 Servers