5.NumPy的基本数学函数

B站影视 欧美电影 2025-03-17 22:20 1

摘要:在NumPy中使用savetxt函数将数据存储到文件中。如:创建一个单位矩阵并将其存储到文件中。 单位矩阵,即主对角线上的元素均为1,其余元素均为0的正方形矩阵。在NumPy中可以用eye函数创建一个这样的二维数组,我们只需要给定一个参数,用于指定矩阵中1的元

在NumPy中使用savetxt函数将数据存储到文件中。如:创建一个单位矩阵并将其存储到文件中。 单位矩阵,即主对角线上的元素均为1,其余元素均为0的正方形矩阵。在NumPy中可以用eye函数创建一个这样的二维数组,我们只需要给定一个参数,用于指定矩阵中1的元素个数。

import numpy as npa = np.eye(3)aarray([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])# 写入文件np.savetxt('a.txt', a)# 读取文件b = np.loadtxt('a.txt')b

CSV(Comma-Separated Value,逗号分隔值)格式是一种常见的文件格式。一般情况下数据库中的数据可以转存为csv格式的文件,文件中的各个字段对应于数据库表中的列。电子表格软件(如Microsoft Excel)可以处理CSV文件。

NumPy中的loadtxt函数可以方便地读取CSV文件,自动切分字段,并将数据载入NumPy数组。用loadtxt函数读取了一个的CSV文件时,用delimiter参数指定了文件中的分隔符为英文逗号,用usecols中的参数指定了感兴趣的数据列,并将unpack参数设置为True使得不同列的数据分开存储。如:

示例文件内容: AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800 AAPL,31-01-2011, ,335.8,340.04,334.3,339.32,13473000 AAPL,01-02-2011, ,341.3,345.65,340.98,345.03,15236800 AAPL,02-02-2011, ,344.45,345.25,343.55,344.32,9242600 AAPL,03-02-2011, ,343.8,344.24,338.55,343.44,14064100 AAPL,04-02-2011, ,343.61,346.7,343.51,346.5,11494200 AAPL,07-02-2011, ,347.89,353.25,347.64,351.88,17322100 AAPL,08-02-2011, ,353.68,355.52,352.15,355.2,13608500 AAPL,09-02-2011, ,355.19,359,354.87,358.16,17240800 AAPL,10-02-2011, ,357.39,360,348,354.54,33162400 AAPL,11-02-2011, ,354.75,357.8,353.54,356.85,13127500 AAPL,14-02-2011, ,356.79,359.48,356.71,359.18,11086200 AAPL,15-02-2011, ,359.19,359.97,357.55,359.9,10149000 AAPL,16-02-2011, ,360.8,364.9,360.5,363.13,17184100 AAPL,17-02-2011, ,357.1,360.27,356.52,358.3,18949000 AAPL,18-02-2011, ,358.21,359.5,349.52,350.56,29144500 AAPL,22-02-2011, ,342.05,345.4,337.72,338.61,31162200 AAPL,23-02-2011, ,338.77,344.64,338.61,342.62,23994700 AAPL,24-02-2011, ,344.02,345.15,338.37,342.88,17853500 AAPL,25-02-2011, ,345.29,348.43,344.8,348.16,13572000 AAPL,28-02-2011, ,351.21,355.05,351.12,353.21,14395400 AAPL,01-03-2011, ,355.47,355.72,347.68,349.31,16290300 AAPL,02-03-2011, ,349.96,354.35,348.4,352.12,21521000 AAPL,03-03-2011, ,357.2,359.79,355.92,359.56,17885200 AAPL,04-03-2011, ,360.07,360.29,357.75,360,16188000 AAPL,07-03-2011, ,361.11,361.67,351.31,355.36,19504300 AAPL,08-03-2011, ,354.91,357.4,352.25,355.76,12718000 AAPL,09-03-2011, ,354.69,354.76,350.6,352.47,16192700 AAPL,10-03-2011, ,349.69,349.77,344.9,346.67,18138800 AAPL,11-03-2011, ,345.4,352.32,345,351.99,16824200 上面的文件内容是股价数据,存储在CSV文件中,第一列为股票代码以标识股票(苹果公司股票代码为AAPL),第二列为dd-mm-yyyy格式的日期,第三列为空,随后各列依次是开盘价、最高价、最低价和收盘价,最后一列为当日的成交量。

# usecols的参数为一个元组,以获取第7字段至第8字段的数据,也就是股票的收盘价和成交量数据。c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)carray([336.1 , 339.32, 345.03, 344.32, 343.44, 346.5 , 351.88, 355.2 ,358.16, 354.54, 356.85, 359.18, 359.9 , 363.13, 358.3 , 350.56,338.61, 342.62, 342.88, 348.16, 353.21, 349.31, 352.12, 359.56,360. , 355.36, 355.76, 352.47, 346.67, 351.99])varray([21144800., 13473000., 15236800., 9242600., 14064100., 11494200.,17322100., 13608500., 17240800., 33162400., 13127500., 11086200.,10149000., 17184100., 18949000., 29144500., 31162200., 23994700.,17853500., 13572000., 14395400., 16290300., 21521000., 17885200.,16188000., 19504300., 12718000., 16192700., 18138800., 16824200.])

NumPy中的mean函数可以计算数组元素的算术平均值。

mean = np.mean(c)mean351.0376666666667

1.成交量加权平均价格 VWAP(Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,它代表着金融资产的“平均”价格。某个价格的成交量越高,该价格所占的权重就越大。VWAP就是以成交量为权重计算出来的加权平均值,常用于算法交易。

vwap = np.average(c, weights=v)vwap350.5895493532009

2.时间加权平均价格 在经济学中,TWAP(Time-Weighted Average Price,时间加权平均价格)是另一种“平均”价格的指标。既然我们已经计算了VWAP,那也来计算一下TWAP吧。其实TWAP只是一个变种而已,基本的思想就是最近的价格重要性大一些,所以我们应该对近期的价格给以较高的权重。最简单的方法就是用arange函数创建一个从0开始依次增长的自然数序列,自然数的个数即为收盘价的个数。

t = np.arange(len(c))twap = np.average(c, weights=t)twap352.4283218390804

通常,我们不仅仅想知道一组数据的平均值,还希望知道数据的极值以及完整的取值范围——最大值和最小值。

min函数和max函数用来找最大值和最小值。

# 将每日最高价和最低价的数据载入数组h,l=np.loadtxt('data.csv', delimiter=',', usecols=(4,5), unpack=True)harray([344.4 , 340.04, 345.65, 345.25, 344.24, 346.7 , 353.25, 355.52,359. , 360. , 357.8 , 359.48, 359.97, 364.9 , 360.27, 359.5 ,345.4 , 344.64, 345.15, 348.43, 355.05, 355.72, 354.35, 359.79,360.29, 361.67, 357.4 , 354.76, 349.77, 352.32])larray([333.53, 334.3 , 340.98, 343.55, 338.55, 343.51, 347.64, 352.15,354.87, 348. , 353.54, 356.71, 357.55, 360.5 , 356.52, 349.52,337.72, 338.61, 338.37, 344.8 , 351.12, 347.68, 348.4 , 355.92,357.75, 351.31, 352.25, 350.6 , 344.9 , 345. ])highest = max(h)highest364.9lowest = min(l)lowest333.53

NumPy中的ptp函数可以计算数组的取值范围。该函数返回的是数组元素的最大值和最小值之间的差值。也就是说,返回值等于max(array) - min(array)。

np.ptp(h)24.859999999999957np.ptp(l)26.970000000000027

来源:IT职业教育

相关推荐