码迷,mamicode.com
首页 > 编程语言 > 详细

Python3玩转儿 机器学习(5)

时间:2018-04-24 23:22:05      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:submenu   pinterest   nic   linked   xpl   birt   dialog   Plan   矩阵   

 

 

numpy 的使用

numpy.array基础

In [1]:
import numpy
In [3]:
numpy.__version__   #查询当前numpy的版本
Out[3]:
‘1.14.0‘
In [4]:
import numpy as np
In [5]:
np.__version__
Out[5]:
‘1.14.0‘
 

Python List 特点

In [7]:
L = [i for i in range(10)]
L
Out[7]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [8]:
L[5]
Out[8]:
5
In [10]:
L[5] = 20
L
Out[10]:
[0, 1, 2, 3, 4, 20, 6, 7, 8, 9]
In [12]:
L[5] = ‘hello‘
L
Out[12]:
[0, 1, 2, 3, 4, ‘hello‘, 6, 7, 8, 9]
 

Python List 中的List是对元素类型没有进行限制的。也就是说什么类型都是可以赋值进去的。

这样使得Python中List是非常灵活的,但是也导致了List的效率是比较低的。

因为对于每个元素都必须去查找对应的元素类型。

Python中array模块是对元素类型有限制的。

 

Python array模块的特点

In [13]:
import array
In [15]:
arr = array.array(‘i‘,[i for i in range(10)])
arr
Out[15]:
array(‘i‘, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [16]:
arr[5]
Out[16]:
5
In [18]:
arr[5] = 100
arr
Out[18]:
array(‘i‘, [0, 1, 2, 3, 4, 100, 6, 7, 8, 9])
In [19]:
arr[5]= ‘hello‘  #限定类型
 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-19-53429961e592> in <module>()
----> 1arr[5]= ‘hello‘

TypeError: an integer is required (got type str)
 

类型限定,但是效率比List更高,但是只是把数据当成数组来看,

并没有将数据当作矩阵来看,所以不适合在大数据和人工智能上使用。

 

Python中 numpy.array的使用

In [21]:
nparr = np.array([i for i in range(10)])
nparr
Out[21]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [22]:
nparr[5]
Out[22]:
5
In [24]:
nparr[5] = 100
nparr
Out[24]:
array([  0,   1,   2,   3,   4, 100,   6,   7,   8,   9])
 

numpy会对类型进行限制

In [25]:
nparr[5] = ‘sdfsd‘    #类型限制
nparr
 
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-011f26deb6f3> in <module>()
----> 1nparr[5] = ‘sdfsd‘
      2 nparr

ValueError: invalid literal for int() with base 10: ‘sdfsd‘
 
查看类型
In [27]:
nparr.dtype   #数据类型
Out[27]:
dtype(‘int32‘)
In [28]:
nparr[5] = 5.0
nparr
Out[28]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
进行了一次隐式的类型转换
 

其他创建 numpy.array的方法

 
创建由10个整数0组成的 int 矩阵
In [30]:
np.zeros(10,dtype=int)
Out[30]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
 
创建一个3行5列全部由0组成的 float 矩阵
In [31]:
np.zeros((3,5),dtype=float)
Out[31]:
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
 
创建一个3行5列全为1的 float 矩阵
In [32]:
np.ones((3,5),dtype=float)
Out[32]:
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])
 
创建一个指定值的矩阵
In [37]:
np.full(shape=(3,5),fill_value=666.0)
Out[37]:
array([[666., 666., 666., 666., 666.],
       [666., 666., 666., 666., 666.],
       [666., 666., 666., 666., 666.]])
 
numpy.arange方法
In [40]:
[i for i in range(0,20,2)]   #0至20 步长为2的数组
Out[40]:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
 
0至20 步长为2的数组
In [39]:
np.arange(0,20,2)
Out[39]:
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
 
numpy.linspace方法
In [42]:
np.linspace(0,20,10)
Out[42]:
array([ 0.        ,  2.22222222,  4.44444444,  6.66666667,  8.88888889,
       11.11111111, 13.33333333, 15.55555556, 17.77777778, 20.        ])
In [43]:
np.linspace(0,20,11)
Out[43]:
array([ 0.,  2.,  4.,  6.,  8., 10., 12., 14., 16., 18., 20.])
 

0至20 等长步长的一共11个元素,包含0也包含20

 
numpy.random 方法
In [44]:
np.random.randint(0,10)
Out[44]:
7
In [46]:
np.random.randint(4,8,size=(3,5))
Out[46]:
array([[6, 4, 4, 4, 4],
       [6, 4, 5, 6, 7],
       [4, 7, 5, 7, 7]])
 

生成一个随机值在4至8之间的 3行5列的矩阵

In [47]:
np.random.seed(666)
np.random.randint(4,8,size=(3,5))
Out[47]:
array([[4, 6, 5, 6, 6],
       [6, 5, 6, 4, 5],
       [7, 6, 7, 4, 7]])
 

设置一个随机数种子

In [50]:
np.random.random()
Out[50]:
0.2811684913927954
 

生成一个0--1之间的随机数

In [54]:
np.random.random((3,5))
Out[54]:
array([[0.46284169, 0.23340091, 0.76706421, 0.81995656, 0.39747625],
       [0.31644109, 0.15551206, 0.73460987, 0.73159555, 0.8578588 ],
       [0.76741234, 0.95323137, 0.29097383, 0.84778197, 0.3497619 ]])
 

生成一个3行5列的随机数矩阵

In [55]:
np.random.normal()
Out[55]:
-0.21326813235544162
 

生成一个符合均值为0,方差为1分布的随机数

In [57]:
np.random.normal(10,100)
Out[57]:
54.07669166918434
 

生成一个符合均值为10,方差为100分布的随机数

In [58]:
np.random.normal(0,1,size = (3,5))
Out[58]:
array([[ 0.69339587,  0.03820097, -0.18592982, -0.35371521, -1.95332994],
       [-0.34376486, -1.47693162, -0.70022971,  0.77605168,  1.18063598],
       [ 0.06102404,  1.07856138, -0.79783572,  1.1701326 ,  0.1121217 ]])
 

生成一个符合均值为0,方差为1分布的 3行5列的随机数

 

当对方法不清楚的时候可以使用 方法?的格式查询使用方法

In [62]:
np.random.normal?
 

help()使用

In [63]:
help(np.random)
 
 

Python3玩转儿 机器学习(5)

标签:submenu   pinterest   nic   linked   xpl   birt   dialog   Plan   矩阵   

原文地址:https://www.cnblogs.com/taoke2016/p/8934224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!