c
各反復で sparse matrixの列が得られるループがありますN
。
N
使用を考えた列ごとに列を組み立て/成長/蓄積するには
N = scipy.sparse.hstack([N, c])
これを行うには、行列を長さ 0 の行で初期化するとよいでしょう。ただし、
N = scipy.sparse.csc_matrix((4,0))
を発生させValueError: invalid shape
ます。
これを正しく行う方法はありますか?
c
各反復で sparse matrixの列が得られるループがありますN
。
N
使用を考えた列ごとに列を組み立て/成長/蓄積するには
N = scipy.sparse.hstack([N, c])
これを行うには、行列を長さ 0 の行で初期化するとよいでしょう。ただし、
N = scipy.sparse.csc_matrix((4,0))
を発生させValueError: invalid shape
ます。
これを正しく行う方法はありますか?
できません。スパース行列は、NumPy 配列と比較して制限があり、特に0
軸を許可しません。すべての疎行列コンストラクターはこれをチェックするため、そのような行列を作成できた場合、SciPy のバグを悪用していることになり、SciPy をアップグレードするとスクリプトが壊れる可能性があります。
そうは言っても、 n × 0 の NumPy 配列が許可されており、事実上ストレージ スペースを必要としないため、 n × 0 のスパース行列が必要な理由がわかりません。
sparse.hstack
軸がゼロの NumPy 配列を処理できないことが判明したため、以前のコメントは無視してください。hstack
ただし、リスト内のすべての列を収集してから、1回の呼び出しでそれらを収集する必要があると思います。append
リストへの 'ing には償却された一定の時間が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>