Skip to main content
 首页 » 编程设计

python之Matplotlib 和 Numpy 数学

2025年05月04日11jpfss

我正在尝试使用 Matplotlib 和 Numpy 获得一些牵引力,但这并不容易。

我正在做一个迷你项目来开始处理 Matplotlib 和 Numpy,但我被卡住了......

代码如下:

# Modules 
import datetime 
import numpy as np 
import matplotlib.finance as finance 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plot 
 
# Define quote 
startdate = datetime.date(2010,10,1) 
today = enddate = datetime.date.today() 
ticker = 'uso' 
 
# Catch CSV 
fh = finance.fetch_historical_yahoo(ticker, startdate, enddate) 
 
# From CSV to REACARRAY 
r = mlab.csv2rec(fh); fh.close() 
# Order by Desc 
r.sort() 
 
 
### Methods Begin 
def moving_average(x, n, type='simple'): 
    """ 
    compute an n period moving average. 
 
    type is 'simple' | 'exponential' 
 
    """ 
    x = np.asarray(x) 
    if type=='simple': 
        weights = np.ones(n) 
    else: 
        weights = np.exp(np.linspace(-1., 0., n)) 
 
    weights /= weights.sum() 
 
 
    a =  np.convolve(x, weights, mode='full')[:len(x)] 
    a[:n] = a[n] 
    return a 
### Methods End 
 
 
prices = r.adj_close 
dates = r.date 
ma20 = moving_average(prices, 20, type='simple') 
ma50 = moving_average(prices, 50, type='simple') 
 
# Get when ma20 crosses ma50 
equal = np.round(ma20,1)==np.round(ma50,1) 
dates_cross  = (dates[equal]) 
prices_cross = (prices[equal]) 
 
# Get when ma20 > ma50 
ma20_greater_than_ma50 = np.round(ma20,1) > np.round(ma50,1) 
dates_ma20_greater_than_ma50  = (dates[ma20_greater_than_ma50]) 
prices_ma20_greater_than_ma50 = (prices[ma20_greater_than_ma50]) 
 
print dates_ma20_greater_than_ma50 
print prices_ma20_greater_than_ma50 

现在我需要做这样的事情:

store the price of the "price_cross" 
see if one day after the "ma20_greater_than_ma50" statment is true, if true store the price as "price of the one day after" 
now do "next price_cross" - "price of the one day after"  (price2 - price1) for all occurences 

我怎样才能做这个数学更重要。我怎样才能获得 Matplotlib 和 Numpy 的吸引力。我应该买什么书?

给我一​​些线索。

最好的问候,

请您参考如下方法:

我同意 Josh,但想添加 matplotlib 库:

http://matplotlib.sourceforge.net/gallery.html

我的大部分情节都是从直接复制接近我想要的东西开始的,然后修改它以满足我的需要。 matplotlib 画廊有很多这样的例子。