b.A1
wird die Arbeit machen.
In [83]: A
Out[83]:
<2x2 sparse matrix of type '<class 'numpy.float64'>'
with 0 stored elements in Compressed Sparse Row format>
In [84]: A.A
Out[84]:
array([[ 0., 0.],
[ 0., 0.]])
In [85]: b=A.sum(axis=0)
In [86]: b
Out[86]: matrix([[ 0., 0.]])
In [87]: b.A1
Out[87]: array([ 0., 0.])
In [88]: A.A.sum(axis=0) # another way
Out[88]: array([ 0., 0.])
Sie können diese abstimmen, oder hier meine Top-Einspielergebnis Antwort hinzufügen: Numpy matrix to array :)
A
eine spärliche Matrix ist. Eine geringe Summe wird mit einem Matrixprodukt (einer geeigneten Matrix von 1s) durchgeführt. Das Ergebnis ist eine dichte Matrix.
Sparse-Matrix hat eine toarray()
-Methode, mit einer .A
Verknüpfung.
Dichte Matrix hat auch diese, aber es hat auch eine .A1
(schlecht dokumentiert - daher alle meine Hits), die auch flacht.
Der doc für A1
:
Return `self` as a flattened `ndarray`.
Equivalent to ``np.asarray(x).ravel()``
In der Tat ist der Code
return self.__array__().ravel()
====================
Ist MATLAB b(:)
wirklich das Äquivalent?
A (:) sind alle Elemente von A, betrachtet als eine einzelne Spalte.
Wenn ich das richtig gelesen habe, das numpy
Äquivalent ist ein transponieren oder b.ravel().T
. Die Form wäre (2,1). Aber in MATLAB ist eine Spaltenmatrix die einfachste Form der Matrix.
In [94]: b.T
Out[94]:
matrix([[ 0.],
[ 0.]])
(Ich bin ein alter MATLAB-Programmierer, mit Octave auf meinem Standby-Computer. Und eine Kopie von 3,5 auf einigen alten Windows-Datenträger. :)).
Siehe http://stackoverflow.com/questions/26576524/how-do-i-transform-a-scipy-sparse-matrix-to-a-numpy-matrix; Beachten Sie insbesondere, dass die Sparse-Matrix über die Methode '.toarray()' verfügt, deren Ergebnis Sie in ein eindimensionales numpy-Array umformen können. –
MATLABs 'b (:)' - was ist die Größe? Immer noch 2d ist es nicht? '(:)' ist ein bisschen wie 'np.ravel', außer MATLAB ist immer 2d oder höher. – hpaulj