将元组列表转换为具有命名列的numpy数组(genfromtxt表示元组列表)

2024-04-27 03:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以直到现在我还在把CSV读入numpy数组

采样线:

20041207,7.04,7.18,6.88,7.10,25981485

代码:

^{pr2}$

现在我必须切换到数据库。从数据库中获取相关值后,如下所示(一个元组列表):

[(datetime.datetime(2004, 12, 7, 0, 0), Decimal('7.04000'), Decimal('7.10000'), Decimal('7.18000'), Decimal('6.88000'), 25981485L), (and so on), ... ]

现在我需要像以前一样转换成相同的numpy数组,我想象它是什么样子的

def mkdate(date):
    return dt.date2num(date)

np.somefunction(
    list_of_tuples,
    names=('date', 'open', 'close', 'high', 'low', 'volume'),
    converters={
        'date': mkdate,
        'open': float,
        'close': float,
        'high': float,
        'low': float,
        'volume': int,
    },
    dtype=(
        np.float64,
        np.float64,
        np.float64,
        np.float64,
        np.float64,
        np.int64
    )
)

所以要进行汇总:我需要将元组列表转换为带有命名列的numpy数组。


Tags: numpy数据库列表closedatetimedatenp数组
1条回答
网友
1楼 · 发布于 2024-04-27 03:35:20

如果np.readtxt()不可行,那么使用numpy的1D数组dict就足够了:

tofloat = lambda w: float(w)  # must be function not type
converters={
    'date': mkdate,
    'open': tofloat,
    'close': tofloat,
    'high': tofloat,
    'low': tofloat,
    'volume': lambda w: int(w),
}
# dict with 1D lists per column: 
dd = dict([(k,[]) for k in converters.keys()])  
with open(fname, 'r') as f:
    for l in f:  # read line
       ww = l.split(',') # split line into strings
       for w,k in zip(ww,dd.keys()):  # iterate over strings and column names
           f = converters[k]
           dd[k].append(f(w)) # append to proper dict-entry list
# convert to dict with numpy arrays:
dd_a = dict([(k,np.asarray(v)) for k,v in dd.items()])

相关问题 更多 >