numpy 简记

基础

不同类型存储

# define a new dtype
from numpy import *
t = dtype([('name',str_,40),('numitems',int32),('price',float32)])

In [9]: t
Out[9]: dtype([('name', 'S40'), ('numitems', '<i4'), ('price', '<f4')])

 itemz = array([('Meaning of life DVD',42,3.14),('2',2,2)],dtype=t)

In [13]: itemz
Out[13]: 
array([('Meaning of life DVD', 42, 3.140000104904175), ('2', 2, 2.0)], 
      dtype=[('name', 'S40'), ('numitems', '<i4'), ('price', '<f4')])

数组组合

1. 水平组合: hstack((a,b))
2. 垂直组合: vstack((a,b))
3. 深度组合: dstack
4. 列组合: column_stack((a,b))
5. 行组合: row_stack((a,b))

对于二维数组1,4是相同的

分割

hsplit、vsplit、dsplit 和split

数组的属性

ndim: 数组维数
size: 元素个数
itemsize: 每个元素占内存数
nbytes: 整个数组所占的空间
T:转置
flat: 返回迭代对象

这里写图片描述

数组的转换

tolist() 转换成列表
astype() 转换数据类型

常用函数

io

np.savetxt("name", data)
c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)
usecols 表示获取6,7字段的数据

#设置存储格式
np.savetxt("weeksummary.csv", weeksummary, delimiter=",", fmt="%s") 
如代码中所示,我们指定了文件名、需要保存的数组名、分隔符(在这个例子中为英文标点逗号)以及存储浮点数的格式.
格式字符串以一个百分号开始。接下来是一个可选的标志字符:- 表示结果左对齐,0 表示左端补0,+表示输出符号(正号+或负号-)。第三部分为可选的输出宽度参数,表示输出的最小位数。第四部分是精度格式符,以"."开头,后面跟一个表示精度的整数。最后是一个类型指定字符,在我们的例子中指定为字符串类型。 
def datestr2num(s): 
    return datetime.datetime.strptime  
    (s, "%d-%m-%Y").date().weekday()
# 加入对某一列的转换converters
dates, close=np.loadtxt('data.csv', delimiter=',', usecols=(1,6), converters={1: 
datestr2num}, unpack=True)

计算

average,max,min,ptp(极差),median,var,mean,diff.log,where,

apply

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
# 对每一行进行操作
np.apply_along_axis(np.mean,1,a)
array([ 2.,  5.,  8.])

#书中例子
def summarize(a, o, h, l, c):  
    monday_open = o[a[0]]  
    week_high = np.max( np.take(h, a) )  
    week_low = np.min( np.take(l, a) ) 
    friday_close = c[a[-1]] 
    return("APPL", monday_open, week_high, week_low, # apply 可以多个数据集一起使用,传参
weeksummary = np.apply_along_axis(summarize, 1, weeks_indices,open, high, low, close) 
print "Week summary", weeksummary 

矩阵操作

np.mat('1 2 3; 4 5 6; 7 8 9') 
#构造一个与a相同形状的0矩阵
np.zeros_like(a)

线性代数

#求逆
np.linalg.inv(A)
#求解线性方程组
np.linalg.solve(A,b)
#广义逆
np.pinv(A)
#行列式
np.linalg.det(A)

搜索index

np.argmax()
np.nanargmax([np.nan,2,4]) # 忽略nan的最大值位置
np.argwhere(a <= 4) # 
# 按照排序 顺序插入
np.searchsorted(a,[-2,7])
# 输出对应角标的元素
np.extract(condition, a) 

matplot

import numpy as np 
import matplotlib.pyplot as plt 

func = np.poly1d(np.array([1, 2, 3, 4]).astype(float))  
x = np.linspace(-10, 10, 30)  
y = func(x) 
func1 = func.deriv(m=1)  
y1 = func1(x)  
func2 = func.deriv(m=2)  
y2 = func2(x) 

plt.subplot(311)  
plt.plot(x, y, 'r-'  ) 
plt.title("Polynomial") 
plt.subplot(312) 
plt.plot(x, y1, 'b^') 
plt.title("First Derivative") 
plt.subplot(313) 
plt.plot(x, y2, 'go') 
plt.title("Second Derivative") 
plt.xlabel('x') 
plt.ylabel('y') 
plt.show()

hist

%matplotlib inline
import matplotlib.pyplot as plt  
import numpy as np 

plt.hist(np.arange(10),3)
plt.show()

对数坐标图

plt.semilogy(dates, volume)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值