2013-06-19 95 views

回答

3

你不能。與NumPy陣列相比,稀疏矩陣受到限制,特別是不允許0用於任何軸。所有稀疏矩陣構造函數都會檢查這一點,所以如果您確實需要構建這樣的矩陣,那麼您正在利用SciPy錯誤,並且在升級SciPy時腳本很可能會中斷。

話雖這麼說,我不明白你爲什麼會需要一個ň×0稀疏矩陣,因爲一個ň×0 NumPy的陣列是允許的,幾乎不帶存儲空間。

原來sparse.hstack無法處理零軸的NumPy數組,因此不考慮我以前的評論。然而,我認爲你應該做的是收集列表中的所有列,然後hstack他們在一個電話。這比循環更好,因爲append'列表需要分攤恆定時間,而hstack需要線性時間。所以你提出的算法需要二次時間,而它可能是線性的。

+0

謝謝,這一切都很合理。我將使用列表! – Jan

1

您的形狀必須至少使用1

N = scipy.sparse.csc_matrix((4,1)) 

,您可以疊加:

print scipy.sparse.hstack((N,N)) 
#<4x2 sparse matrix of type '<type 'numpy.float64'>' 
# with 0 stored elements in COOrdinate format> 
+0

謝謝,我知道,但我正在尋找(4,0)矩陣。 – Jan