1

私のベクトルの 1 つは scipy.sparse.csr.csr_matrix の形式で、もう 1 つは numpy.ndarray です。以下に実験的なコードがあります。

import numpy as np
from scipy.sparse import csr_matrix

x = np.arange(5)+1
y = [1, 0, 0, 1, 2]
y = csr_matrix(y)
print type(x)
print type(y)

z = np.true_divide(y,x)
print z.shape

z.shape = (5L,) を取得しましたが、それが何を意味するのかわかりません。z を出力すると、3 つの要素を含む行ベクトルであることがわかります。z からの 1*5 ベクトルなど、数値結果を出力するにはどうすればよいですか? 私はPythonとこれらの数学パッケージが初めてで、疎行列演算について何かを学びたいだけです. 私の問題は、このような操作を正しく効率的に行う方法です。毎回疎な表現を密な表現に戻すことなく方法があると思うからです。

ありがとう!

4

1 に答える 1

1

あなたはこれを行うことができます:

import numpy as np
from scipy.sparse import csr_matrix

x = np.arange(5)+1

y = [1, 0, 0, 1, 2]
y = csr_matrix(y)

x2 = 1.0 / np.matrix(x)

z = y.multiply(x2)

結果:

>>> z
matrix([[ 1.  ,  0.  ,  0.  ,  0.25,  0.4 ]])
于 2013-05-21T02:52:45.570 に答える