1、写文件
(1) 单位矩阵,即主对角线上的元素均为1,其余元素均为0的正方形矩阵。在NumPy中可以用eye函数创建一个这样的二维数组,我们只需要给定一个参数,用于指定矩阵中1的元素个数。
(2) 使用savetxt函数将数据存储到文件中,当然我们需要指定文件名以及要保存的数组。
#coding:utf-8
import numpy as np
a=np.eye(3)
print a
np.savetxt('eye.txt',a)
2、CSV 文件
CSV(Comma-Separated Value,逗号分隔值)格式是一种常见的文件格式。通常,数据库的转存文件就是CSV格式的,文件中的各个字段对应于数据库表中的列。众所周知,电子表格软件(如Microsoft Excel)可以处理CSV文件。
NumPy中的loadtxt函数可以方便地读取CSV文件,自动切分字段,并将数据载入NumPy数组。
data.csv中内容
AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
def loadtxt(fname, dtype=float, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0):
fname:读取文件的文件名。例如C:/Dataset/iris.txt。
delimiter:数据之间的分隔符。如使用逗号","。
dtype:数据类型。如float,str等。
usecols:选取数据的列。
skiprows作用是跳过头行。在默认情况下是通过空格来分割列的,如果想通过其他来分割列则需要通过delimiter来设置。如果你想跳过几列来读取则需要用usecoles来设置。
正常情况下该返回的是二维矩阵,若设置了unpack=True将返回各列。
读取data文件
#设置分隔符为,(英文标点逗号),处理一个CSV文件。usecols的参数为一个元组,以获取第7字段至第8字段的数据,
#unpack参数设置为True,意思是分拆存储不同列的数据,即分别将第7字段至第8字段的数据赋值给变量c和v
c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)
print c,v
3、平均值函数
mean函数可以计算数组元素的算术平均值。
average函数加权平均
def average(a, axis=None, weights=None, returned=False):a:数组,列表
axis:维度选择
weight:权重,和为1,类型同a
a=np.arange(5)
#b是各元素对应的权重,权重之和为1
b=np.array([0,0.1,0.2,0.3,1])
print np.average(a,weights=b)
print np.mean(a)
c=[1,2,3,4,5]
print np.average(c,weights=b)
d=np.arange(20).reshape(4,5)
dw=[0.1,0.1,0.3,0.3,0.2]
print np.average(d,axis=1,weights=dw)
4、最大值、最小值
def amax(a, axis=None, out=None, keepdims=np._NoValue):
a : array_like Input data.
axis : None or int or tuple of ints, optional
out : ndarray, optional
keepdims : bool, optional
def amin(a, axis=None, out=None, keepdims=np._NoValue):同上
a=np.arange(10)
print np.min(a)
print np.max(a)
5、函数
median的函数找到中位数
msort函数排序数组
var方差
diff函数可以计算数组中两个连续元素的差值,并返回一个由这些差值组成的数组
where函数可以根据指定的条件返回所有满足条件的数组元素的索引值。
take函数来根据索引值获取数组元素的值
savetxt函数,将数据保存至文件
linspace函数需要一个起始值和一个终止值参数,以及可选的元素个数的参数,它将返回一个元素值在指定的范围内均匀分布的数组。
linspace(m,n,l):m,n指范围,l指化成l等份
exp函数可以计算出每个数组元素的指数。
exp(x):x表数组,求解以e为底,x中的各元素为指数的数组。
convolve函数,计算一组数据与指定权重的卷积,convolve(weights,arr)
fill函数可以将数组元素的值全部设置为一个指定的标量值,它的执行速度比使用array.flat = scalar或者用循环遍历数组赋值的方法更快。
import numpy as np
import sys
from matplotlib.pyplot import plot
from matplotlib.pyplot import show
N = 3
weights = np.ones(N) / N
print "Weights", weights
c = np.array([344.17,344.4,333.53,336.1,21144800])
sma = np.convolve(weights, c)[N-1:-N+1]
deviation = []
C = len(c)
for i in range(N - 1, C):
if i + N < C:
dev = c[i: i + N]
else:
dev = c[-N:]
averages = np.zeros(N)
averages.fill(sma[i - N - 1])
dev = dev - averages
dev = dev ** 2
dev = np.sqrt(np.mean(dev))
deviation.append(dev)
deviation = 2 * np.array(deviation)
print len(deviation), len(sma)
upperBB = sma + deviation
lowerBB = sma - deviation
c_slice = c[N-1:]
between_bands = np.where((c_slice < upperBB) & (c_slice > lowerBB))
print lowerBB[between_bands]
print c[between_bands]
print upperBB[between_bands]
between_bands = len(np.ravel(between_bands))
print "Ratio between bands", float(between_bands)/len(c_slice)
t = np.arange(N - 1, C)
plot(t, c_slice, lw=1.0)
plot(t, sma, lw=2.0)
plot(t, upperBB, lw=3.0)
plot(t, lowerBB, lw=4.0)
show()
clip方法返回一个修剪过的数组,也就是将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值。
compress方法返回一个根据给定条件筛选后的数组。
prod方法,计算阶乘
cumprod方法,计算数组元素的累积乘积
import numpy as np
a=np.arange(5)
print a
print a.clip(1,2)
print a.compress(a>2)
b=np.arange(1,6)
print b.prod()
print b.cumprod()
diagonal函数查看对角线上的元素
cov函数协方差矩阵
trace函数计算矩阵的迹,即对角线上元素之和
polyval函数,推断下一个值
roots函数找出我们拟合的多项式函数什么时候到达0值
polyder函数对多项式函数求导
argmax和argmin找出最大值点和最小值点
piecewise函数来获取数组元素的正负
hanning函数计算权重,生成一个长度为N的窗口