Which version are you using?

(this misbehavior sounds familiar)

iterator() should return all values.

iterateNonZero() is allowed to skip zeros.

On Mon, Jan 14, 2013 at 6:11 AM, Koert Kuipers <[email protected]> wrote:

> i am looking at the iterators for DenseVector, RandomAcccessSparseVector
> and SequentialAccessSparseVector.
>
> for both DenseVector and RandomAcccessSparseVector the iterator seems to
> return all values, including the missing zero values.
> for SequentialAccessSparseVector the iterator also returns all values, but
> only up to the last non-missing value!
>
> is this by design? what is a vector iterator supposed to return exactly? i
> can't see a logical pattern/consistency. see examples below.
> thanks! koert
>
> scala> val x = new org.apache.mahout.math.RandomAccessSparseVector(5)
> x: org.apache.mahout.math.RandomAccessSparseVector = {}
>
> scala> x.set(3, 1.0)
>
> scala> for (item <- x.iterator.asScala) println((item.index, item.get))
> (0,0.0)
> (1,0.0)
> (2,0.0)
> (3,1.0)
> (4,0.0)
>
> scala> val y = new org.apache.mahout.math.SequentialAccessSparseVector(5)
> y: org.apache.mahout.math.SequentialAccessSparseVector = {
>
> scala> y.set(3, 1.0)
>
> scala> for (item <- y.iterator.asScala) println((item.index, item.get))
> (0,0.0)
> (1,0.0)
> (2,0.0)
> (3,1.0)
>

Reply via email to