1
我正在試圖使機器學習lib與scipy稀疏矩陣一起工作。從稀疏矩陣獲取所有唯一值[python/scipy]
下面的代碼是檢測y
中是否有1個以上的類。因爲分類時只有1個類是沒有意義的。
import numpy as np
y = np.array([0,1,0,1,0,1])
uniques = set(y) # get {0, 1}
if len(uniques) == 1:
raise RuntimeError("Only one class detected, aborting...")
但set(y)
如果y
是SciPy的稀疏矩陣無法正常工作。
如何有效地獲得所有唯一值如果y
是scipy稀疏矩陣?
PS:我知道set(y.todense())
可以工作,但花費太多的內存
UPDATE:
>>> y = sp.csr_matrix(np.array([0,1,0,1,0,1]))
>>> set(y.data)
{1}
>>> y.data
array([1, 1, 1])
scipy(0.16.1),'set(y.data)'不適用於win7 x64和centos 6.5 x64 – Mithril
我已更新我的測試問題。 – Mithril
你將不得不自己添加'0'。正如你所看到的,'y.data'數組只有非零值。這就是稀疏矩陣的本質。如果你不想使用我們能做的最好的密集版本。 – hpaulj