我有一個循環,在每次迭代中給我一個稀疏矩陣N
的列c
。如何在scipy中定義(n,0)稀疏矩陣或者如何組合稀疏矩陣列?
要組裝/成長/柱積累N
列我想用
N = scipy.sparse.hstack([N, c])
要做到這一點,這將是很好的與長度爲0然而行初始化矩陣,
N = scipy.sparse.csc_matrix((4,0))
產生了一個ValueError: invalid shape
。
任何建議,如何做到這一點?
我有一個循環,在每次迭代中給我一個稀疏矩陣N
的列c
。如何在scipy中定義(n,0)稀疏矩陣或者如何組合稀疏矩陣列?
要組裝/成長/柱積累N
列我想用
N = scipy.sparse.hstack([N, c])
要做到這一點,這將是很好的與長度爲0然而行初始化矩陣,
N = scipy.sparse.csc_matrix((4,0))
產生了一個ValueError: invalid shape
。
任何建議,如何做到這一點?
你不能。與NumPy陣列相比,稀疏矩陣受到限制,特別是不允許0
用於任何軸。所有稀疏矩陣構造函數都會檢查這一點,所以如果您確實需要構建這樣的矩陣,那麼您正在利用SciPy錯誤,並且在升級SciPy時腳本很可能會中斷。
話雖這麼說,我不明白你爲什麼會需要一個ň×0稀疏矩陣,因爲一個ň×0 NumPy的陣列是允許的,幾乎不帶存儲空間。
原來sparse.hstack
無法處理零軸的NumPy數組,因此不考慮我以前的評論。然而,我認爲你應該做的是收集列表中的所有列,然後hstack
他們在一個電話。這比循環更好,因爲append
'列表需要分攤恆定時間,而hstack
需要線性時間。所以你提出的算法需要二次時間,而它可能是線性的。
您的形狀必須至少使用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>
謝謝,我知道,但我正在尋找(4,0)矩陣。 – Jan
謝謝,這一切都很合理。我將使用列表! – Jan