2

このようなスパース行列を取得しました

>>>import numpy as np
>>>from scipy.sparse import *
>>>A = csr_matrix((np.identity(3)))

>>>print A
  (0, 0)    1.0
  (1, 1)    1.0
  (2, 2)    1.0

理解を深めるためAに、次のようなものがあります。

>>>print A.todense()
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

そして、私はこれを行うオペレーター(私たちはそれを呼びましょうop1(n))を持っていたいです:

>>>A.op1(1)
[[ 0.  1.  0.]
 [ 0.  0.  1.]
 [ 1.  0.  0.]]

=>最後のn列を最初の列にするnので

>>>A == A.op1(3)  
true

。スパース行列を再び返す組み込みソリューション(EDIT :)はありますか?との解決策roll

X = np.roll(X.todense(),-tau, axis = 0)
print X.__class__

戻り値

<class 'numpy.matrixlib.defmatrix.matrix'>
4

2 に答える 2

4

scipy.sparseはありませんがroll、次のようにシミュレートできますhstack

from scipy.sparse import *
A = eye(3, 3, format='csr')
hstack((A[:, 1:], A[:, :1]), format='csr')    # roll left
hstack((A[:, -1:], A[:, :-1]), format='csr')  # roll right
于 2012-07-30T11:17:47.260 に答える
1
>>> a = np.identity(3)
>>> a
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])
>>> np.roll(a, -1, axis=0)
array([[ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 1.,  0.,  0.]])
>>> a == np.roll(a, 3, axis=0)
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
于 2012-07-29T19:19:23.773 に答える