2017-04-23 275 views
-1

我正在從名爲'OneHot'的數據框的列中讀取數據。此列的每一行都有[1,0]或[0,1]的值。我試圖將這些值存儲到變量中,以便我可以在神經網絡中使用它。矩陣打印的尺寸不正確

問題: 當我將值讀入一個變量時,它存儲爲(792824,1)而不是(792824,2)。 792824是數據框中的行數。我試過重塑,但沒有奏效。

這裏是我的代碼:

input_matrix = np.matrix(df['VectorTweet'].values.tolist()) 
​ 
In [157]: 

    input_matrix = np.transpose(input_matrix) 
    x_inputs = input_matrix.shape 
    print x_inputs 
(792824, 1) 

In [160]: 

    output_matrix = np.matrix(df['OneHot'].values.tolist()) 
    y_inputs = np.transpose(output_matrix) 
    print y_outputs.shape 
​ 
(792824, 1) 

    print y_outputs[1] 

[['[1, 0]']] 

附上我的數據框Example of my dataframe的一個片段。

enter image description here

回答

0

看起來像OneHot每個條目是一個列表的字符串表示。這就是爲什麼你只能在你的轉置中獲得一列 - 你已經做出了一個整數列表的字符串的單元素列表。你可以列出的字符串轉換爲實際列表與ast.literal_eval()

# OneHot as string of list of ints 
strOneHot = pd.Series(['[0,1]','[1,0]']) 

print(strOneHot.values) 
# ['[0,1]' '[1,0]'] 

import ast 
print(strOneHot.apply(ast.literal_eval).values) 
# [[0, 1] [1, 0]] 

FWIW,你可以採取的熊貓系列轉置與.T,如果這是有用的位置:

strOneHot.apply(ast.literal_eval).T 

輸出:

0 [0, 1] 
1 [1, 0] 
dtype: object