1

設定した名前で配列の値を取得しようとしている次のコードがあります。

import datetime
import numpy as np
import matplotlib.finance as finance
import matplotlib.mlab as mlab

def get_pxing(my_tickers):
    dt = np.dtype([('sym', np.str_, 6), ('adj_close', np.float32)])
    close_px = []
    for ticker in my_tickers:
    # a numpy record array with fields: date, open, high, low, close, volume, adj_close)
        fh = finance.fetch_historical_yahoo(ticker, startdate, enddate)
        r = mlab.csv2rec(fh)    
        fh.close()
        prices = np.array((ticker, r.adj_close), dtype=dt)
        close_px.append(prices)
    return close_px

enddate = startdate = datetime.date.today() - datetime.timedelta(1)

my_tickers = np.genfromtxt('./stocklist.csv', delimiter = ",", dtype=None, names=True)

data = get_pxing(my_tickers["ticker"])
print data

これはうまくいきますが、試してみると

print data['sym'] 

私は得る:

Traceback (most recent call last):
  File "stockyield.py", line 26, in <module>
    print data['sym']
TypeError: list indices must be integers, not str

おそらく、close_px.append を使用して誤って配列を変換した可能性がありますが、常に配列の不一致が発生するため、np.append の使用方法がわかりません。

私の入力 csv ファイルは次のようになります。

ticker, holding
T, 100
F, 200

最善のアプローチに関する提案はありますか?

4

1 に答える 1