详解numpy矩阵的创建与数据类型
Numpy是python常用的一个类库,在python的使用中及其常见,广泛用在矩阵的计算中,numpy对矩阵的操作与纯python比起来速度有极大的差距。
一、 构造矩阵
矩阵的构造可以有多种方法:
1.使用python中的方法构造矩阵
- 生成一维矩阵
- 生成二维及多维矩阵
2.使用numpy中的方法来生成矩阵
numpy类库中生成的矩阵的数据类型为numpy.ndarray,与python中的列表不同。
(1)array()方法生成矩阵
1 2 3 4 5 6 7 8 | #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) |
array()方法可以将一个列表转换为对应维度相同的numpy矩阵。
(2)生成随机矩阵方法rand()和randn()
1 2 3 4 5 6 | import numpy as np #生成一个随机数矩阵 data = np.random.randn( 2 , 3 ) #是从标准正态分布中返回一个或多个样本值 data1 = np.random.rand( 2 , 3 ) #随机样本位于[0, 1)中 print (data) print (data1) |
(3)矩阵的加法与乘法,numpy矩阵中矩阵与数字相加或相乘,则数组中每一个元素都执行相加或相乘。
1 2 3 4 5 | import numpy as np data = np.random.randn( 10 ) #是从标准正态分布中返回一个或多个样本值 print (data) print ( "data * 10 :\n" ,data * 10 ) #每一个元素乘以十 print ( "data+data:\n" ,data + data) #实现数组中每一个位置自加操作 |
(4)零矩阵
可以用numpy的zeros()方法生成元素值全为0的矩阵。
1 2 3 4 5 6 7 | 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) #生成一个三维的全零矩阵 |
(5)一矩阵
同零矩阵一样,numpy中的ones()方法可以生产元素值全为一的矩阵
1 2 3 4 5 6 7 | 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) |
(6)empty()方法
python中也可以使用numpy.empty()方法来生产一些看似是0的数,语法和ones()方法一样
1 2 3 4 5 6 7 8 | #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) |
就算是在编译器中显示的值为0,但其实际的值并不是0,只是一个很靠近0的数。
1 2 3 4 5 | #numpy入门 import numpy as np data1 = np.empty(( 3 , 4 )) #生成一个三行四列的全零矩阵 print ( "data1:\n" ,data1) print ( "1/data1:\n" , 1 / data1) |
inf表示无穷大的意思,如若data1中数据的值为0的话,在运行的过程中解释器会出错。
#注意:认为np.empty会返回全0数组的想法是不安全的。很多情况下(如前所示),它返回的都是一些未初始化的垃圾值。
(7)arange()方法
类似于range()方法
1 2 3 4 5 6 7 | 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
(8)reshape()方法,重新生成矩阵的维度大小
上例中,将一个一维的十元素矩阵转换成一个两行五列的矩阵。
注意:使用reshape()方法从一维转多维时,一维矩阵的元素个数必须与多维矩阵的相同,也即是上例中的10=2*5,如若不相等的话解释器或出现错误。
(9)一些与矩阵的大小有关的值
1 2 3 4 5 6 7 8 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) #元素的数据类型 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
使用Python的Supervisor进行进程监控以及自动启动
这篇文章主要介绍了使用Python的Supervisor进行进程监控以及自动启动,使用python supervisor实现,需要的朋友可以参考下2014-05-05浅谈Keras参数 input_shape、input_dim和input_length用法
这篇文章主要介绍了浅谈Keras参数 input_shape、input_dim和input_length用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06Python import与from import使用和区别解读
Python程序可以调用一组基本的函数(即内建函数),比如print()、input()和len()等函数。接下来通过本文给大家介绍Python import与from import使用及区别介绍,感兴趣的朋友一起看看吧2021-09-09Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
这篇文章主要介绍了Python3.7基于hashlib和Crypto实现加签验签功能,环境是基于python3.7,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-12-12
最新评论