2017-09-14 73 views
-1

我有一個Pandas Dataframe,它有4行N列,我將其中1列用作分類器的特徵。顯示如下將Pandas Dataframe轉換爲numpy數組時將其重新塑形

0 [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] 
1 [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1] 
2 [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0] 
3 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0] 

此列實質上是一個list 16個二進制編碼的功能。

但是,當我養活這對我的分類,下面的錯誤出現

Traceback (most recent call last): 
     clf.fit(X,y) 
     X, y = check_X_y(X, y, 'csr') 
     ensure_min_features, warn_on_dtype, estimator) 
     array = np.array(array, dtype=dtype, order=order, copy=copy) 
ValueError: setting an array element with a sequence. 

我猜想錯誤是由於擬合方法想要一個N×M的矩陣,而它得到的形狀是

(4,) 

所以基本上,

我想嘗試轉換形狀(4)塑造(4,16)

我想下面的功能:

X = np.asarray(train_data['presence_vector']) 
X.reshape((4,16)) 
X = train_data['presence_vector'].values 
X.reshape((4,16)) 
X = train_data['presence_vector'].as_matrix() 
X.reshape((4,16)) 

,可是沒有工作。

+0

你只是不能重塑形狀(4,)來塑造(4,16)他們有不同數量的元素。這不能解決你的問題(這是完全不清楚的)。 – Julien

+0

https://coderpad.io/JWYMP4TX – mwweb

+0

我以編程方式瞭解這些'可能'有不同的元素,但我知道'它總是會有相同的號碼。的元素。我只是想知道是否有沒有循環的解決方案。 –

回答

0

應該嘗試通常的方法。如果可以有更好的解決方案比下面更好

reshaped=[] 
for l in X: 
    reshaped.append(l) 

X_new=np.array(reshaped) 
print(X_new.shape) 
(4, 16) 
相關問題