0
我有一個scipy形式的大型稀疏矩陣coo_matrix
(大小爲5GB)。我必須利用矩陣的非零條目並做一些進一步的處理。Scipy處理大型COO矩陣
訪問矩陣元素的最佳方式是什麼?我應該將矩陣轉換爲其他格式還是原樣使用它?另外,你能否告訴我訪問coo_matrix
元素的確切語法?我有點困惑,因爲它不允許切片。
我有一個scipy形式的大型稀疏矩陣coo_matrix
(大小爲5GB)。我必須利用矩陣的非零條目並做一些進一步的處理。Scipy處理大型COO矩陣
訪問矩陣元素的最佳方式是什麼?我應該將矩陣轉換爲其他格式還是原樣使用它?另外,你能否告訴我訪問coo_matrix
元素的確切語法?我有點困惑,因爲它不允許切片。
首先,讓我們建立一個隨機COO矩陣:
import numpy as np
from scipy import sparse
x = sparse.rand(10000, 10000, format='coo')
非零值在矩陣的.data
屬性中找到,你可以得到其相應的行/使用x.nonzero()
列索引:
v = x.data
r, c = x.nonzero()
print np.all(x.todense()[r, c] == v)
# True
使用COO矩陣,可以使用getrow()
/getcol()
方法爲單行或列索引(作爲稀疏向量)。如果您想對特定元素進行切片或花式索引,則需要將其轉換爲另一種格式,例如lil_matrix
,例如使用.tolil()
方法。
你應該真的閱讀scipy.sparse
docs以獲得更多關於不同稀疏數組格式的特性的信息 - 格式的合適選擇實際上取決於你計劃如何處理數組。
非常感謝! :) – AnotherCodingEnthusiast