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()
时间: 2024-10-14 00:18:38

Python数据处理——numpy_3的相关文章

python数据处理技巧二

python数据处理技巧二(掌控时间) 首先简单说下关于时间的介绍其中重点是时间戳的处理,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.这里这个知识只做了解,接下来会用python三个关于时间的模块来定位时间,计算时间等. 首先让我们来验证下时间戳及怎么换算时间戳 1.要使用time方法首先要导入方法包import time 2.获取当前时间戳的方法是print time.time()就可以得到当前执行这个方法

《Python数据处理》(高清中文版PDF+高清英文版PDF+源代码)

下载:https://pan.baidu.com/s/19QPmRWF9uEEJLEmBQoYMiw 最新的<Python数据处理>.高清中文版和高清英文版对比学习, 带目录书签,可复制粘贴:讲解详细并配有源代码. 一块儿学习探讨,支持正版书籍. 其中高清中文版 原文地址:http://blog.51cto.com/3215120/2300897

分享《Python数据处理》+PDF+源码+Jacqueline Kazil+张亮 吕家明

下载:https://pan.baidu.com/s/178uLnSsEy5wf6m0V1magRg 更多资料分享:http://blog.51cto.com/14087171 <Python数据处理>(高清中文版PDF+高清英文版PDF+源代码) 高清中文版, 402页,带目录书签,文字可复制粘贴:高清英文版, 501页,带目录书签,文字可复制粘贴:中文和英文两版对比学习:讲解详细并配有源代码. 其中,高清中文版如图: 原文地址:http://blog.51cto.com/14087171/

Python数据处理实战

一.运行环境 1.python版本 2.7.13 博客代码均是这个版本2.系统环境:win7 64位系统 二.需求 对杂乱文本数据进行处理 部分数据截图如下,第一个字段是原字段,后面3个是清洗出的字段,从数据库中聚合字段观察,乍一看数据比较规律,类似(币种 金额 万元)这样,我想着用sql写条件判断,统一转换为'万元人民币' 单位,用sql脚本进行字符串截取即可完成,但是后面发现数据并不规则,条件判断太多清洗质量也不一定,有的前面不是左括号,有的字段里面没有币种,有的数字并不是整数,有的没有万字

Python数据处理与计算——概述

Python是一种面向对象的,动态的程序设计语言,具有非常简洁而清晰的语法,适合于完成各种高层任务.它既可以用来快速开发程序脚本,也可以用来开发大规模的软件. 随着NumPy.SciPy.Matplotlib.Enthoughtlibrarys等众多程序库的开发,Python越来越适合于做科学计算.绘制高质量的2D和3D图像.与科学计算领域最流行的商业软件MATLAB相比,Python是一门通用的程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多的程序库的支持.虽然MATLAB

Python数据处理实例

使用python进行数据处理的实例(数据为某公司HR部门关于员工信息的部分摘录,kaggle上面的一次赛题) https://www.kaggle.com/c/kfru-dbm-hr-analytics 该实例是根据其他所给属性预测员工是否会离职,代码实现如下所示 import pandas as pd from sklearn.preprocessing import MinMaxScaler,StandardScaler from sklearn.preprocessing import L

Python 数据处理扩展包: numpy 和 pandas 模块介绍

一.numpy模块 NumPy(Numeric Python)模块是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)).据说NumPy将Python相当于变成一种免费的更强大的MatLab系统. NumPy模块提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库等. 1).一个强大的N维数组对象Array: 2).比较成熟

python 数据处理学习pandas之DataFrame

请原谅没有一次写完,本文是自己学习过程中的记录,完善pandas的学习知识,对于现有网上资料的缺少和利用python进行数据分析这本书部分知识的过时,只好以记录的形势来写这篇文章.最如果后续工作定下来有时间一定完善pandas库的学习,请见谅!                     by LQJ 2015-10-25 前言: 首先推荐一个比较好的Python pandas DataFrame学习网址 网址: http://www.cnblogs.com/chaosimple/p/4153083

python数据处理:NumPy基础

本文资料来自:Python for Data Analysis, Chapter 4 1. NumPy简介 NumPy,Numerical Python简称,是科学计算和数据分析所用的基础包.对于数据分析师,主要关注以下几点: a: Fast vectorized arrya operations for data munging and cleaning(数据分析和清洗), subsetting and filtering(和过滤), transformation and any other