3

各 XML ドキュメントを csr_matrix 形式の機能マトリックスとして表しています。約 3000 の XML ドキュメントができたので、csr_matrices のリストを取得しました。これらの各マトリックスを平坦化して特徴ベクトルにし、これらの特徴ベクトルをすべて結合して、すべての XML ドキュメントを 1 つとして表す 1 つの csr_matrix を形成します。ここで、各行はドキュメントであり、各列は特徴です。

これを達成する1つの方法は、このコードを使用することです

X= csr_matrix([a.toarray().ravel().tolist() for a in ls])

ここで、ls は csr_matrices のリストですが、これは非常に非効率的です。3000 個のドキュメントがあると、単純にクラッシュします!

つまり、私の質問は、そのリスト 'ls' 内の各 csr_matrix を配列に変換せずに平坦化する方法と、平坦化された csr_matrix を別の csr_matrix に追加する方法です。

私はScipyでpythonを使用していることに注意してください

前もって感謝します!

4

1 に答える 1

4

csr_matrixXML ごとに使用する理由は、 reshape メソッドをサポートする を使用する方がよいかもしれません。例を次に示しますlillil_matrix

N, M, K = 100, 200, 300
matrixs = [sparse.rand(N, M, format="csr") for i in xrange(K)]
matrixs2 = [m.tolil().reshape((1, N*M)) for m in matrixs]
m1 = sparse.vstack(matrixs2).tocsr()

# test with dense array
#m2 = np.vstack([m.toarray().reshape(-1) for m in matrixs])
#np.allclose(m1.toarray(), m2)
于 2013-03-22T07:53:24.810 に答える