2017-04-10 92 views
0

我試圖從graphlab SFrame訪問多行並將它們轉換爲numpy數組。Graphlab Sframe,檢索多行

我有一個96000行和4096列的數據庫fd,需要檢索存儲在numpy數組中的行號。我提出的方法非常緩慢。我懷疑這是因爲我在每次迭代中都不斷增加sframe的大小,但我不知道是否有預分配值的方法。我需要抓取20000行並且當前的方法沒有完成。

fd=fd.add_row_number() 
print(indexes) 
xs=fd[fd['id'] == indexes[0]] #create the first entry 

t=time.time() 
for i in indexes[1:]: #Parse through and get indeces 
    t=time.time() 
    xtemp=fd[fd['id'] == i] 
    xs=xs.append(xtemp) #append the new row to the existing sframe 
    print(time.time()-t) 

xs.remove_column('id') #remove the ID Column 
print(time.time()-t) 
x_sub=xs.to_numpy() #Convert the sframe to numpy 

回答

0

您可以將SFramepandas.DataFrame,發現行與IDS從indexes轉換,刪除數據幀的專欄'id'這個數據幀轉換爲numpy.ndarray

例如:

import numpy as np 

fd=fd.add_row_number() 
df = fd.to_dataframe() 
df_indexes = df[df.id.isin(indexes)] 
df_indexes = df_indexes.drop(labels='id', axis=1) 
x_sub = np.array(df_indexes)