Python数据处理——numpy_3
通过前面两次的学习,基本上对numpy有了一定的认识,所以,接下来进一步对numpy学习。同时,最后以一个有趣的例子加深对numpy的理解。
- import numpy as np
- xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
- yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
- cond = np.array([True, False, True, True, False])
- # 如果cond中的值是T时,选取xarr的值,否则从yarr中选取。这种模式就是:x if condition else y (condition与x相等,就选x,否则y)
- result = [(x if c else y)
- for x, y, c in zip(xarr, yarr, cond)]
- #print result
- '''
- 上面式子可以用一个函数代替:np.where( , , ,)。第一个参数是一个判定,这个判定的结果是根据后面两个参数来输出的。其中,第二个
- 是第一个参数的True结果输出,而第三个参数是第一个False结果输出。
- '''
- result = np.where(cond,xarr,yarr)
- #print result
- from numpy.random import randn
- arr = randn(4,4)
- #把大于0的值变成2,小于0的值变成-2
- result = np.where(arr > 0, 2, -2)
- #print result
- #只把大于0的值变成2,其他的不变
- result = np.where(arr > 0, 2, arr)
- #print result
- '''
- np.where(rond1 & rond2, 0,
- np.where(rond1, 1,
- np.where(rond2, 2, 3)))
- '''
- ax = np.random.randn(5, 4)
- #print ax
- a = ax[0,:]
- #计算每一行的均值使用axis = 1 1代表行
- #print ax.mean(axis=1)
- #print a.mean()
- b = ax[:,0]
- #计算每一列的均值使用axis = 0 0代表列
- #print ax.mean(axis=0)
- #print b.mean()
- ay = np.array([[0,1,2],
- [3,4,5],
- [6,7,8]])
- #计算每一列前个数与后个数的和,返回的仍是一个数组。 0代表列
- #print ay.cumsum(0)
- #计算每一行前个数与后个数的积,返回的仍是一个数组。 1代表行
- #print ay.cumprod(1)
- #计算ax中正数的个数, 布尔值会被强制转为1(True)和 0(False)。
- #print ( ax > 0 ).sum()
- import numpy as np
- a = np.arange(10)
- np.save("some_array", a)
- b = np.load("some_array.npy")
- #print b
- #加载txt和逗号分隔文件(CSV)方式。保存用np.savetxt方式
- #ab = np.loadtxt("array_ex.txt", delimiter= ",")
- #线性代数
- #建立一个一维数组由3个1组成。
- np.ones(3)
- x = np.array([[1,2,3], [4,5,6]])
- y = np.array([[6, 23],[-1, 7],[8, 9]])
- #计算两个数组的乘积。dot()函数
- x.dot(y)
- np.dot(x, y)
- np.dot(x, np.ones(3))
- from numpy.random import randn
- from numpy.linalg import inv, qr
- X = randn(5, 5)
- mat = X.T.dot(X)
- #计算数组的逆
- inv(mat)
- mat.dot(inv(mat))
- #计算QR分解
- q, r = qr(mat)
- #print r
最后,以随机漫步的例子,运用numpy加深对其的理解。
- import random
- import numpy as np
- from numpy.random import randint
- b = np.random.randint(0,2) # numpy中的randint不能取右端的那个值,也就是例子中(0,2)不能取到2
- a = random.randint(0,2) # random中的randint是可以取到右端的值,(0,2)也就是在0,1,2中随机取值
- #随机漫步(普通版)
- position = 0
- walk = [position]
- steps = 10
- for i in xrange(steps):
- # 这句话实际上是一种逻辑判断句,random.randint是逻辑判断条件,与0比较。标准语句:a if condition else b .判断条件大于0,选择a,反之,选择b。
- step = 1 if random.randint(0,1) else -1
- position += step
- walk.append(position)
- #print walk
- #随机漫步(提升版)
- nsteps = 10
- draws = np.random.randint(0,2, size= nsteps)
- steps = np.where(draws > 0, 1, -1)
- # 将结果变成一种数组
- walk = steps.cumsum()
- #print walk
- #只有数组能这样使用
- walk.min()
- walk.max()
- #判断从0到2步,所需要多久,多少次。
- (np.abs(walk) >= 2).argmax()
- #多个随机漫步
- nwalks = 100
- nsteps = 100
- draws = np.random.randint(0,2, size=(nwalks, nsteps))
- steps = np.where(draws > 0, 1, -1)
- #计算每一行的累计和。“1”代表行,“0”代表列
- walks = steps.cumsum(1)
- walks.min()
- walks.max()
- #计算大于20或-20的布尔值(True,False)
- np.abs(walks) >= 20
- #计算每一行中有大于20或-20的布尔值
- hits20 = (np.abs(walks) >= 20).any(1)
- #计算达到20或-20的行,一共有多少个
- hits20.sum()
- #计算达到20或-20的行的漫步累计次数
- walks[hits20]
- #计算达到20或-20的每一行第一次漫步到20或-20的步数
- crossing_times = (np.abs(walks[hits20])>= 20).argmax(1)
- #计算达到20或-20的每一行第一次漫步到20或-20的步数的均值
- print crossing_times.mean()
Python数据处理——numpy_3的更多相关文章
- Python数据处理PDF
Python数据处理(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1h8a5-iUr4mF7cVujgTSGOA 提取码:6fsl 复制这段内容后打开百度网盘手机A ...
- Python 数据处理库 pandas 入门教程
Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...
- 参考《Python数据处理》中英文PDF+源代码
在实际操作中掌握数据处理方法,比较实用.采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.E ...
- python数据处理技巧二
python数据处理技巧二(掌控时间) 首先简单说下关于时间的介绍其中重点是时间戳的处理,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00 ...
- Python 数据处理之对 list 数据进行数据重排(为连续的数字序号)
Python 数据处理之对 list 数据进行数据重排(为连续的数字序号) # user ID 序号重新排,即,原来是 1,3,4,6 ,排为 1,2,3,4 # item ID 序号重新排,too ...
- Python数据处理pdf (中文版带书签)、原书代码、数据集
Python数据处理 前言 xiii第1 章 Python 简介 11.1 为什么选择Python 41.2 开始使用Python 41.2.1 Python 版本选择 51.2.2 安装Python ...
- Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)
0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...
- python数据处理书pdf版本|内附网盘链接直接提取|
Python数据处理采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.Excel.XML.J ...
- 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常见的两种方式,本篇文章继续说另外一种比较常用的数据库:Sqlite Sqlite 是一种 嵌入式数据库,数据库就是一个文件,体积很 ...
随机推荐
- 基于 Koa平台Node.js开发的KoaHub.js连接打印机的代码
最近好多小伙伴都在做微信商城的项目,那就给大家分享一个基于 Koa.js 平台的 Node.js web 开发的框架连接微信易联云打印机接口的代码,供大家学习.koahub-yilianyun 微信易 ...
- spring知识点全部复习
一. 专业术语 侵入式设计 引入框架,对现有的类的结构有影响,即需要实现或继承某些特定类.如:Struts框架 非侵入式设计 引入框架,对现有的类结构没有影响.如:Hibernate.Spring 控 ...
- docker X509 证书错误的终极解决办法
最近在做Docker相关的东西,发现只要一pull镜像,就出现如下的ERROR x509: certificate signed by unknown authority. 调查后发现,是公司IT把h ...
- Selenium2 WebDriver环境搭建
1.下载Selenium Client Servers包 在Selenium官网上可以下载到最新的开源的包http://seleniumhq.org/download/,根据编写测试脚本所使用的语言下 ...
- vue搭建开发环境
windows下搭建vue开发环境 一.安装node.js 安装 vue项目通常通过webpack工具来构建,而webpack命令的执行是依赖node.js环境,所以首先要安装node.js. n ...
- Web Storage
前面的话 Web存储最初作为HTML5的一部分被定义成API形式,但是后来被剥离出来作为独立的一份标准了.该标准目前还在草案阶段,但其中一部分内容已经被包括IE8在内的所有主流浏览器(可交互地)实现了 ...
- MSDN官方数据库开发群
QQ群1:43563009 创建人:中国风(Roy_88) 创建时间:2007-07-21 当前人数:326人 QQ群2:27156079 创建人: fcuandy 创建时间:2008-03-20 当 ...
- 在Windows的DOS中运行java编程中的问题
1.苦恼着我的就是找不到或无法加载主类!
- python中input()与raw_input()的区别到底是啥?-----marsggbo原创作品为你解答
首先先给出总结:input () = int(raw_input()) 有图有真相!!! 先看看input的例子: 可见用input键入得到int类型的数据,那如果输入一些非int类型的会怎么样呢? ...
- TypeScript入门-接口
▓▓▓▓▓▓ 大致介绍 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. ▓▓▓▓▓▓ 接口 例子: function printLabel(labelledO ...