Matplotlib и Numpy Math - PullRequest
       31

Matplotlib и Numpy Math

1 голос
/ 01 марта 2011

Я пытаюсь добиться успеха с 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. Какие книги я должен купить?

Дайте мне несколько подсказок.

С наилучшими пожеланиями,

Ответы [ 4 ]

5 голосов
/ 01 марта 2011

Я согласен с Джошем, но хотел добавить галерею matplotlib:

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

Большинство моих сюжетов начинаются с прямого копирования чего-то близкого к тому, что я хочу, а затем изменения его в соответствии с моими потребностями. В галерее matplotlib есть много таких примеров.

3 голосов
/ 01 марта 2011

Я бы сказал, что вам не обязательно выходить и покупать какие-либо книги.Лучшее (и более дешевое) решение - взглянуть на онлайн-учебники, такие как:

http://www.scipy.org/Tentative_NumPy_Tutorial

http://matplotlib.sourceforge.net/examples/index.html

и попытаться собрать воедино вещи из документациии поиск подходящих ключевых слов.Из кода, который вы представили (при условии, что вы его написали), вы понимаете, что такое numpy.Чтобы получить более конкретную / подробную справку, вам нужно быть немного более конкретным с проблемами, с которыми вы сталкиваетесь.

2 голосов
/ 01 марта 2011

Вот список, с которого можно начать, вы, вероятно, найдете наиболее важные для вас части после их просмотра:

  1. Руководство по Python http://docs.python.org/tutorial/
  2. Numpy руководство пользователя отhttp://docs.scipy.org/doc/
  3. Руководство пользователя Matplotlib http://matplotlib.sourceforge.net/users/index.html
  4. Дополнительные источники документации Numpy / Scipy http://www.scipy.org/Additional_Documentation

Возможно, вы захотите подписаться на списки рассылки для numpyи / или matplotlib.

1 голос
/ 02 марта 2011

matplotlib и numpy имеют огромный список полезных функций, вам всегда нужно сначала поискать в Google, прежде чем внедрять.

, например, см. Функцию movpg matplotlib.

...