通过前面两次的学习,基本上对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的更多相关文章

  1. Python数据处理PDF

    Python数据处理(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1h8a5-iUr4mF7cVujgTSGOA 提取码:6fsl 复制这段内容后打开百度网盘手机A ...

  2. Python 数据处理库 pandas 入门教程

    Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...

  3. 参考《Python数据处理》中英文PDF+源代码

    在实际操作中掌握数据处理方法,比较实用.采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.E ...

  4. python数据处理技巧二

    python数据处理技巧二(掌控时间) 首先简单说下关于时间的介绍其中重点是时间戳的处理,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00 ...

  5. Python 数据处理之对 list 数据进行数据重排(为连续的数字序号)

    Python 数据处理之对 list 数据进行数据重排(为连续的数字序号) # user ID 序号重新排,即,原来是 1,3,4,6 ,排为 1,2,3,4 # item ID 序号重新排,too ...

  6. Python数据处理pdf (中文版带书签)、原书代码、数据集

    Python数据处理 前言 xiii第1 章 Python 简介 11.1 为什么选择Python 41.2 开始使用Python 41.2.1 Python 版本选择 51.2.2 安装Python ...

  7. Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)

    0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...

  8. python数据处理书pdf版本|内附网盘链接直接提取|

    Python数据处理采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.Excel.XML.J ...

  9. 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)

    1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常见的两种方式,本篇文章继续说另外一种比较常用的数据库:Sqlite Sqlite 是一种 嵌入式数据库,数据库就是一个文件,体积很 ...

随机推荐

  1. loadrunner入门篇-Analysis 分析器

    analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来分析性能测试结果的数据图,但并不一定要对每个视图进行分析,可以根据实际情况选择相关的数据视图进行分析, ...

  2. 1295: [SCOI2009]最长距离

    1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 960  Solved: 498[Submit][Status ...

  3. 雪花降落CAEmitterLayer粒子效果

    CAEmitterLayer 实现雪花效果   首先需要导入#import <QuartzCore/QuartzCore.h>   /**在iOS 5中,苹果引入了一个新的CALayer子 ...

  4. 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)

    目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...

  5. Angular企业级开发(9)-前后端分离之后添加验证码

    1.背景介绍 团队开发的项目,前端基于Bootstrap+AngularJS,后端Spring MVC以RESTful接口给前端调用.开发和部署都是前后端分离.项目简单部署图如下,因为后台同时采用微服 ...

  6. Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释

    @PostConstruct 和 @PreDestroy 注释: 你可以使用 @PostConstruct 注释作为初始化回调函数的一个替代,@PreDestroy 注释作为销毁回调函数的一个替代,其 ...

  7. 使用jQuery监听扫码枪输入并禁止手动输入的实现方法

    @(知识点总结)[jquery|扫码抢] 基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条 ...

  8. MYSQL性能优化--分库分表

    1.分库分表 1>纵向分表 将本来可以在同一个表的内容,人为划分为多个表.(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的.) 分表理由:根据数据的活跃度进行分离,(因为不同 ...

  9. J2那几个E和Web基础

    收到PHP童鞋的反馈: 我觉得不用讲太基础的语法,基础语法大家自己去看,主要讲讲java web开发的一个流程,从开始写代码,到编译,发布,上线,回滚整个流程 大体上的环节,以及需要用到哪些工具 具体 ...

  10. 使用register_shutdown_function触发写日志,使用fastcgi_finish_request提高响应速度

    公司内部的市场管理系统,一直是我一个人维护,最近老是有开发埋怨,内网的账号被人改了密码,账号被解绑了...哈的,错在这还不是一个完整的系统,既没有严格的权限也没有做操作日志呀... 权限现在是准备做在 ...