数据分析基础教程Numpy指南笔记

Numpy指南笔记

第2章:Numpy基础

创建多维数组
# coding:utf-8
import numpy as np
m=np.array([np.arange(2),np.arange(2)])
print m
print m.shape

一维数组切片和索引
# coding:utf-8
import numpy as np
a=np.arange(9)
print a
print a[3:7]
print a[:7:2] #用下标0-7,以2为步长选取元素

多维数组切片和索引
# coding:utf-8
import numpy as np
b=np.arange(24).reshape(2,3,4)
print b
print ‘-------------‘
print ‘b[0,0,0]‘,b[0,0,0]
print ‘-------------‘
print ‘b[:,0,0]‘,b[:,0,0]
print ‘-------------‘
print ‘b[0]‘,b[0]
print ‘-------------‘
print ‘b[0,1]‘,b[0,1]
print ‘-------------‘
print ‘b[0,1,::2]‘,b[0,1,::2] #上面数组间隔选取元素
print ‘-------------‘
print ‘b[:,1]‘,b[:,1]
print ‘-------------‘
print ‘b[0,:,1]‘,b[0,:,1]
print ‘-------------‘
print ‘b[0,:,-1]‘,b[0,:,-1] #第一层楼最后一列
print ‘-------------‘
print ‘b[0,::-1,-1]‘,b[0,::-1,-1] #反向选取第一层楼的最后一列的所有房间
print ‘-------------‘
print ‘b[0,::2,-1]‘,b[0,::2,-1] #数组切片中间隔的选定元素
print ‘-------------‘
print ‘b[::-1]‘,b[::-1] #第一层和第二层交换位置

改变数组的维度
ravel函数可以完成展平操作 shape 改变维度
# coding:utf-8
import numpy as np
b=np.arange(24).reshape(2,3,4)
print b
a= b.ravel()
print a
a.shape=(6,4) #设置数组维度
print a

数组的组合 np.hstack水平组合 np.vstack 垂直组合
# coding:utf-8
import numpy as np
a=np.arange(9).reshape(3,3)
print a
b=2*a
print b
print ‘--------------------‘
print np.hstack((a,b)) #数组水平组合
print ‘--------------------‘
print np.vstack((a,b)) #垂直组合

第3章:常用函数
import numpy as np
i2=np.eye(2) #2*2数组
np.savetxt(‘eye.txt’,i2) #存储文件

AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800 #很多数据其中一行
...

c,v=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(6,7),unpack=True) #设置分隔符号为,usecols的参数为一个元组,以获取第7字段和第8字段的数据。upack参数设置为True,意思是拆分存储不同列的数据
vwap=np.average(c,weights=v) #以v列的数据作为权重计算c的平均权重值
np.mean(c) #计算c的平均值

时间加权平均价格
t=np.arange(len(c)) #求出行数
np.average(c,weights=t)

h,l=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(4,5),unpack=True) #将每日最高价和最低价的数据载入数组
np.max(h) #获取该行最大值
np.min(l) #获取该行最小值
ptp计算数组的取值范围=max(array)-min(array)
np.ptp(h) np.ptp(l)
np.median(c) 找到中位数
np.msort(c) 将数组从小到大排序
np.var(c) 计算数组的方差
np.diff(c) 返回由相邻数组元素的插值构成的数组
np.std() 返回数组的标准差
np.where(数组>0) where函数可以根据指定的条件返回所有满足条件的数组元素的索引值
strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。
converters:数据列和转换函数之间进行映射的字典
np.take(数组,索引) 获取数组索引值的元素值

x = np.array([[1, 2], [3, 4]])
>>> x.ravel()
array([1, 2, 3, 4])
p52没有完
第3章:便捷函数

np.corrcoef(bhp_returns,vale_returns) 计算两个矩阵的相关系数
[[1. 0.67841747
0.67841747 1.]] 右对角线是相关系数

poly=np.polyfi(长度,差值, )拟合一系列数据点 实际就是一个函数
np.polyval(poly,长度+1) 推断下一个值
vals=np.ployval(poly,t)
np.argmax(vals) 函数最大值
np.argmin(vals) 函数最小值
np.sign(change) change是数据列表 返回对应数据正负号对应列表
hanning函数是一个加权余弦的窗函数

第5章:矩阵和通用函数
a=np.mat(‘1 2 3;4 5 6;7 8 9‘) #创建矩阵 有空格
a.T 矩阵转置
a.I 矩阵求逆
A = np.mat(np.arange(9).reshape(3,3))

A = np.eye(2)

B=2*A

np.bmat(‘A B;A B‘)

a=np.arange(9)
print np.add.reduce(a) 求和结果36

a=np.array([2,6,5])
b=np.array([1,2,3])
print np.true_divide(a,b)

数组相除

a=np.arange(-4,4)
print a%2

[1,1,2,3,5,8,13,21]
a=np.matrix([[1,1],[1,0]]) 创建斐波那契数列矩阵
print (a**4)[0,0] 为5 该数列第5个数

第6章:深入学习NumPy模块
numpy.linalg模块包含线性代数的函数,使用这个模块可以计算逆矩阵,求特征值,解线性方程组以及求解行列式。
求逆矩阵
import numpy as np
A=np.mat(‘0 1 2;1 0 3;4 -3 8‘)
print A
inverse=np.linalg.inv(A)
print inverse

求解线性方程组的解
# coding:utf-8
import numpy as np
A=np.mat(‘1 -2 1;0 2 -8;-4 5 9‘)
print A
b=np.array([0,8,-9]) #数组y
print b
x=np.linalg.solve(A,b)
print x

numpy.linalg模块中,eigvals函数可以计算矩阵的特征值
# coding:utf-8
import numpy as np
A=np.mat(‘3 -2;1 0‘)
print A
B=np.linalg.eigvals(A)
print B

eig函数求解特征值和特征向量
# coding:utf-8
import numpy as np
A=np.mat(‘3 -2;1 0‘)
print A
B=np.linalg.eig(A)
print B

奇异值分解
# coding:utf-8
import numpy as np
A=np.mat(‘4 11 14;8 7 -2‘)
print A
U,Sigma,V=np.linalg.svd(A,full_matrices=False)
print‘U‘
print U
print ‘Sigma‘
print Sigma
print ‘V‘
print V

并非得到中间的奇异值矩阵,得到的是对角线上的值

矩阵行列式
# coding:utf-8
import numpy as np
A=np.mat(‘3 4;5 6‘)
print A
B=np.linalg.det(A)
print B

第七章:专用函数
sort函数返回排序后的数组
lexsort 函数根据键值的字典序进行排序
argsort 函数返回输入数组排序后的下标
ndarray类的sort方法可对数组进行原地排序
msort函数沿着第一个轴排序
sort_complex函数对复数按照先实部后虚部的顺序进行排序

argmax函数返回数组中最大值对应下标 argmin类似
# coding:utf-8
import numpy as np
a = np.array([2,4,8])
print np.argmax(a)

searchsorted函数为指定的插入值返回一个在有序数组中的索引位置
# coding:utf-8
import numpy as np
a = np.arange(5)
print a
indices=np.searchsorted(a,[-2,7])
print indices

numpy的extract函数可以根据某个条件从数组中抽取元素。
使用nonzero函数抽取数组中的非零元素
# coding:utf-8
import numpy as np
a = np.arange(7)
print a
condition=(a%2)==0
print ‘even numbers‘,np.extract(condition,a)
print ‘Non zero‘,np.nonzero(a)

第9章:使用Matplotlib绘图
matplotlib.pyplot包中包含了简单绘图功能
使用show函数显示

绘制多项式函数
# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt
func=np.poly1d(np.array([1,2,3,4]).astype(float)) #创建多项式
print func
x=np.linspace(-10,10,30) #在-10和10之间产生30个均匀分布的值
y=func(x) #创建多项式的值
plt.plot(x,y) #调用plot函数
plt.xlabel(‘x‘) #使用xlabel函数添加x轴标签
plt.ylabel(‘y(x)‘)
plt.show()

时间: 2024-10-15 02:55:51

数据分析基础教程Numpy指南笔记的相关文章

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

《语义网基础教程》学习笔记(一)

一.XML概述 1.有效(valid)的XML文档:遵守了XML文档的基本规则,并使用DTD或Schema定义了语义约束,而且也完全遵守了DTD或Schema所定义的语义约束的XML文档 2.XML声明部分的encoding属性值应该与保存该文档所使用的字符集相同.如果需要让XML支持中文,应该注意以下几点: ①保存文件时使用支持中文的字符集 ②XML声明部分的encoding属性应该与保存该文件时所使用的字符集相同 3.XML元素里的多个属性之间是无序的,因此同一个元素不可包含多个同名的属性,

《语义网基础教程》学习笔记(二)

二.RDF概述(参考http://zh.transwiki.org/cn/rdfprimer.htm) 1.本体: 一个本体是一个概念体系(conceptualization)的显式的形式化规范. 一般来说,一个本体形式地刻画一个论域.一个典型的本体由有限个术语及它们之间的关系组成. ★在万维网这个环境中,本体提供了对给定领域的一种共识.这种共识对于消除术语差别是必要的. 通过把各自的术语差异映射到一个公共的本体之间的直接映射,可以消除这些术语差异. 不管采用哪种方案,本体都支持语义可共用性(s

python基础教程_学习笔记23:图形用户界面

图形用户界面 丰富的平台 在编写Python GUI程序前,需要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合,可以通过叫做GUI工具包的给定Python模块进行访问. 工具包 描述 Tkinter 使用Tk平台.很容易得到.半标准. wxpython 基于wxWindows.跨平台越来越流行. PythonWin 只能在Windows上使用.使用了本机的Windows GUI功能. JavaSwing 只能用于Jython.使用本机的Java GUI. PyGTK 使用GTK

python基础教程_学习笔记3:元组

元组 元组不能修改:(可能你已经注意到了:字符串也不能修改.) 创建元组的语法很简单:如果用逗号分隔了一些值,那么你就自动创建了元组. >>> 1,3,'ab' (1, 3, 'ab') 元组也是(大部分时候是)通过圆括号括起来的. >>> (1,3,'13') (1, 3, '13') 空元组可以用没有内容的两个圆括号来表示. 如何实现包括一个值的元组呢? >>> (5) 5 >>> ('ab') 'ab' >>>

python基础教程_学习笔记9:抽象

抽象 懒惰即美德. 抽象和结构 抽象可以节省大量工作,实际上它的作用还要更大,它是使得计算机程序可以让人读懂的关键. 创建函数 函数可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> import math >>> y=1 >>> x=math.sqrt >>> callable(x) True >>> callab

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by

python基础教程_学习笔记6:字典

字典 映射(mapping),一种可通过名字引用值得数据结构. 字典是python中唯一内建的映射类型. 字典中的值没有特殊的顺序,但都存储在一个特定的键(key)里.键可以是数字.字符串甚至是元组. 字典的使用 某些情况下,字典比列表更加适用,比如: 表征游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改数,用文件名作为键: 数字电话/地址簿: 假如有一个人名列表如下: >>>names=['Alice','Beth','Cecil','Dee-Dee','Earl'] 如果