[SciPy-User] 0 * inf = 0 for some sparse matrix operations

Lutz Maibaum lutz.maibaum@gmail....
Fri Aug 26 20:39:54 CDT 2011


Hello,

most of the time, trying to multiply 0 by infinity results in NaNs. However, in some sparse matrix operations such as matrix multiplication, such terms seem to be silently ignored (or interpreted as zeros). Is this the intended behavior? Is there a way to perform matrix multiplications such that 0*inf = NaN?

Any help would be much appreciated. Best wishes,

  Lutz


In [2]: import numpy as np

In [3]: from scipy.sparse import csr_matrix

In [4]: 0 * np.inf
Out[4]: nan

In [5]: np.array([0]) * np.array([np.inf])
/opt/local/bin/ipython-2.6:1: RuntimeWarning: invalid value encountered in multiply
  #!/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
Out[5]: array([ nan])

In [6]: np.array([0]).dot(np.array([np.inf]))
Out[6]: nan

In [7]: (csr_matrix([0]) * csr_matrix([np.inf])).toarray()
Out[7]: array([[ 0.]])

In [8]: (csr_matrix([0]).dot(csr_matrix([np.inf]))).toarray()
Out[8]: array([[ 0.]])

In [9]: (csr_matrix([0]).multiply(csr_matrix([np.inf]))).toarray()
Out[9]: array([[ nan]])



More information about the SciPy-User mailing list