2
我最近遇到困難時,使用scipy
將coo_matrix
轉換爲密集矩陣。我有一個dtype float16
稀疏矩陣,並試圖將其轉換爲密集矩陣。該錯誤會報告給出一個類型爲char
的數組。不過,我很確定我正在傳遞一個float16
類型的數組。Python TypeError使用Scipy's coo_matrix.todense()
錯誤是:
self.Xd_train = X_train.todense()
File "C:\Python27\lib\site-packages\scipy\sparse\base.py", line 501, in todense
return np.asmatrix(self.toarray(order=order, out=out))
File "C:\Python27\lib\site-packages\scipy\sparse\coo.py", line 241, in toarray
B.ravel('A'), fortran)
File "C:\Python27\lib\site-packages\scipy\sparse\sparsetools\coo.py", line 175, in coo_todense
return _coo.coo_todense(*args)
TypeError: Array of type 'float' required. Array of type 'char' given
出現在類構造器的錯誤:
self.Xd_train = X_train.todense()
矩陣X_train
似乎是良好形成並且絕對不char
類型:
>> X_train.dtype
float16
>> X_train.shape
(6206, 4712)
>> type(X_train)
<class 'scipy.sparse.coo.coo_matrix'>
>> str(X_train)
(0, 63) 2.0
(0, 72) 1.0
(0, 76) 2.0
(0, 100) 1.0
(0, 104) 1.0
(0, 5) 1.0
(0, 10) 2.0
(0, 134) 2.0
(0, 20) 3.0
(0, 263) 1.0
(0, 264) 1.0
(0, 265) 1.0
(0, 27) 1.0
(0, 148) 2.0
(0, 32) 1.0
(0, 275) 1.0
(0, 35) 1.0
(0, 36) 1.0
(0, 279) 1.0
(0, 39) 1.0
(0, 41) 1.0
(0, 42) 1.0
(0, 52) 1.0
(0, 59) 4.0
(1, 72) 1.0
: :
(6205, 133) 1.0
(6205, 134) 4.0
(6205, 135) 4.0
(6205, 136) 2.0
(6205, 137) 6.0
(6205, 138) 1.0
(6205, 139) 4.0
(6205, 20) 4.0
(6205, 142) 4.0
(6205, 23) 2.0
(6205, 24) 2.0
(6205, 26) 2.0
(6205, 27) 2.0
(6205, 32) 1.0
(6205, 33) 1.0
(6205, 35) 1.0
(6205, 36) 1.0
(6205, 37) 1.0
(6205, 39) 1.0
(6205, 40) 1.0
(6205, 41) 1.0
(6205, 42) 1.0
(6205, 43) 1.0
(6205, 56) 3.0
(6205, 60) 1.0
對這個問題可能有什麼想法?另外,讓我知道是否需要額外的細節/信息。
我在Windows 7上使用Python 2.7.2,使用Numpy 1.7和Scipy 0.11。謝謝。
感謝您的回答和報告錯誤:
我在SciPy的GitHub的網站上創建一個問題這一點。乾杯! – 2013-05-11 05:25:28
'float16'(和'bool')當前不受支持的數據類型。 – 2013-05-11 12:14:04