Python3玩转儿 机器学习(5)
numpy 的使用
numpy.array基础
import numpy
numpy.__version__ #查询当前numpy的版本
'1.14.0'
import numpy as np
np.__version__
'1.14.0'
Python List 特点
L = [i for i in range(10)]
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
L[5]
5
L[5] = 20
L
[0, 1, 2, 3, 4, 20, 6, 7, 8, 9]
L[5] = 'hello'
L
[0, 1, 2, 3, 4, 'hello', 6, 7, 8, 9]
Python List 中的List是对元素类型没有进行限制的。也就是说什么类型都是可以赋值进去的。这样使得Python中List是非常灵活的,但是也导致了List的效率是比较低的。因为对于每个元素都必须去查找对应的元素类型。Python中array模块是对元素类型有限制的。
Python array模块的特点
import array
arr = array.array('i',[i for i in range(10)])
arr
array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[5]
5
arr[5] = 100
arr
array('i', [0, 1, 2, 3, 4, 100, 6, 7, 8, 9])
arr[5]= 'hello' #限定类型
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-53429961e592> in <module>()
----> 1 arr[5]= 'hello'
TypeError: an integer is required (got type str)
类型限定,但是效率比List更高,但是只是把数据当成数组来看,并没有将数据当作矩阵来看,所以不适合在大数据和人工智能上使用。
Python中 numpy.array的使用
nparr = np.array([i for i in range(10)])
nparr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr[5]
5
nparr[5] = 100
nparr
array([ 0, 1, 2, 3, 4, 100, 6, 7, 8, 9])
numpy会对类型进行限制
nparr[5] = 'sdfsd' #类型限制
nparr
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-25-011f26deb6f3> in <module>()
----> 1 nparr[5] = 'sdfsd'
2 nparr
ValueError: invalid literal for int() with base 10: 'sdfsd'
查看类型
nparr.dtype #数据类型
dtype('int32')
nparr[5] = 5.0
nparr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
进行了一次隐式的类型转换
其他创建 numpy.array的方法
创建由10个整数0组成的 int 矩阵
np.zeros(10,dtype=int)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
创建一个3行5列全部由0组成的 float 矩阵
np.zeros((3,5),dtype=float)
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
创建一个3行5列全为1的 float 矩阵
np.ones((3,5),dtype=float)
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
创建一个指定值的矩阵
np.full(shape=(3,5),fill_value=666.0)
array([[666., 666., 666., 666., 666.],
[666., 666., 666., 666., 666.],
[666., 666., 666., 666., 666.]])
numpy.arange方法
[i for i in range(0,20,2)] #0至20 步长为2的数组
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
0至20 步长为2的数组
np.arange(0,20,2)
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
numpy.linspace方法
np.linspace(0,20,10)
array([ 0. , 2.22222222, 4.44444444, 6.66666667, 8.88888889,
11.11111111, 13.33333333, 15.55555556, 17.77777778, 20. ])
np.linspace(0,20,11)
array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.])
0至20 等长步长的一共11个元素,包含0也包含20
numpy.random 方法
np.random.randint(0,10)
7
np.random.randint(4,8,size=(3,5))
array([[6, 4, 4, 4, 4],
[6, 4, 5, 6, 7],
[4, 7, 5, 7, 7]])
生成一个随机值在4至8之间的 3行5列的矩阵
np.random.seed(666)
np.random.randint(4,8,size=(3,5))
array([[4, 6, 5, 6, 6],
[6, 5, 6, 4, 5],
[7, 6, 7, 4, 7]])
设置一个随机数种子
np.random.random()
0.2811684913927954
生成一个0--1之间的随机数
np.random.random((3,5))
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列的随机数矩阵
np.random.normal()
-0.21326813235544162
生成一个符合均值为0,方差为1分布的随机数
np.random.normal(10,100)
54.07669166918434
生成一个符合均值为10,方差为100分布的随机数
np.random.normal(0,1,size = (3,5))
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列的随机数
当对方法不清楚的时候可以使用 方法?的格式查询使用方法
np.random.normal?
help()使用
help(np.random)
Python3玩转儿 机器学习(5)的更多相关文章
- Python3玩转儿 机器学习(2)
机器学习的基本任务 分类任务 回归任务 分类任务 手写输入数字识别 分类任务: 二分类任务 判断邮件是垃圾邮件或者不是垃圾邮件 判断发放给客户信用卡有风险或者没有风险 判断病患良性肿瘤还是恶性肿瘤 判 ...
- Python3玩转儿 机器学习(1)
机器学习的基础概念 数据 著名的鸢尾花数据 https://en.wikipedia.org/wiki/lris_flower_data_set lris setossa ...
- Python3玩转儿 机器学习(3)
机器学习算法可以分为: 监督学习 非监督学习 半监督学习 增强学习 监督学习:给机器的训练数据拥有"标记"或者"答案",例如: 我们需要告诉机器左边的画面是一只 ...
- Python3玩转儿 机器学习(4)
jupyternotebook 的使用方法¶ 最基本的使用¶ In [1]: 1+2 Out[1]: 3 菜单树¶ File¶ |------> New Notebook --- ...
- 5分钟教你玩转 sklearn 机器学习(上)
假期结束,你的状态有没有回归?那么,放空脑袋后,先来学习学习,欢迎大家继续关注腾讯云技术社区. 作者:赵成龙 这是一篇很难写的文章,因为我希望这篇文章能对大家有所帮助.我不会给大家介绍机器学习,数据挖 ...
- Python3玩转单链表——逆转单向链表pythonic版
[本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表. 单向链表中的节点不光有代表方向的指针变量,也有值变量.所以我 ...
- Python3入门机器学习经典算法与应用
<Python3入门机器学习经典算法与应用> 章节第1章 欢迎来到 Python3 玩转机器学习1-1 什么是机器学习1-2 课程涵盖的内容和理念1-3 课程所使用的主要技术栈第2章 机器 ...
- Python3入门机器学习经典算法与应用☝☝☝
Python3入门机器学习经典算法与应用 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 使用新版python3语言和流行的scikit-learn框架,算法与 ...
- 机器学习(1)——K近邻算法
KNN的函数写法 import numpy as np from math import sqrt from collections import Counter def KNN_classify(k ...
随机推荐
- Android简易实战教程--第九话《短信备份~二》
这一篇,承接地八话.使用高效的方式备份短信--xml序列化器. 存储短信,要以对象的方式存储.首先创建javabean: package com.itydl.createxml.domain; pub ...
- Android简易实战教程--第八话《短信备份~一》
各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部 ...
- Sky(dart)语言介绍-android学习之旅(十)
认识dart语言 google于2011年10月10日发布了"dart"语言的"早起预览版",google希望利用这款语言,帮助开发者克服javaScript的 ...
- iOS中 最新微信支付/最全的微信支付教程详解 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 亲们, 首先让我们来看一下微信支付的流程吧. 1. 注册微信开放平台,创建应用获取appid,appSecret, ...
- 01 Android修改新建虚拟机存放的位置
创建的Android虚拟机(即AVD)的位置是在C盘的当前用户文件夹下(C:\Users\用户名\.android\avd) 这一默认设置不怎么好,特别是C盘空间吃紧的话. 这里提供2个解决办法(分2 ...
- Ext JS 6开发实例(二) :使用CMD创建应用程序
由于Ext JS 6将原来的Ext JS和Sencha Touch合并为一个框架,因而在使用CMD来创建应用程序前,需要考虑清楚你是要创建一个通用应用程序,还是仅仅只是针对桌面或移动设备的应用程序. ...
- java设计模式---三种工厂模式之间的区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...
- App会取代网站吗?
本文摘自<程序员的修炼:从优秀到卓越>,购买链接:http://product.china-pub.com/3769829 自1999年以来,不管是作为买家还是卖家,我一直是eBay的热心 ...
- Cocos2D:塔防游戏制作之旅(十五)
Yes,貌似添加了好多的代码啊 ;] ,在你添加更多代码时,你可能注意到一些Xcode中的一些警告.首先你先忽略这些警告,我们先添加少量最终缺失的部分,然后再来解释上面代码做了什么! 在Enemy.m ...
- mixer: sql词法分析器设计
介绍 mixer希望在proxy这层就提供自定义路由,sql黑名单,防止sql注入攻击等功能,而这些的基石就在于将用户发上来的sql语句进行解析.也就是我最头大的词法分析和语法分析. 到现在为止,我只 ...