[SciPy-user] howto dot(a, b.T), some a or b coords are zeros
Nathan Bell
wnbell@gmail....
Wed Jan 2 14:47:36 CST 2008
On Jan 2, 2008 1:28 PM, dmitrey <dmitrey.kroshko@scipy.org> wrote:
> hi all,
> I have 2 vectors a and b of shape (n, 1) (n can be 1...10^3, 10^4, may
> be more); some coords of a or b usually are zeros (or both a and b, but
> b is more often); getting matrix c = dot(a, b.T) is required (c.shape =
> (n,n))
>
> What's the best way to speedup calculations (w/o using scipy, only numpy)?
> (I intend to use the feature to provide a minor enhancement for NLP/NSP
> ralg solver).
How much more expensive is dot(a,b.T) than zeros((n,n))? Is outer()
any faster? What proportion of a and b are zero?
You could remove all zeros from a and b, compute that outer product,
and then paste the results back into an n by n matrix. I doubt this
would be any faster though since the outerproduct doesn't do many
FLOPs.
I know you don't want to use scipy, but time the following:
from scipy.sparse import *
asp = csr_matrix(a)
bsp = csr_matrix(b.T)
c = asp * bsp # time this
--
Nathan Bell wnbell@gmail.com
More information about the SciPy-user
mailing list