@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size); } if (offset + length > size) { throw new IndexException(offset + length, size); } return new VectorView(this, offset, length); }
@Test public void testIterator() throws Exception { VectorView view = new VectorView(new DenseVector(values), OFFSET, CARDINALITY); double[] gold = {1.1, 2.2, 3.3}; Iterator<Vector.Element> iter = view.iterator(); checkIterator(iter, gold); iter = view.iterateNonZero(); checkIterator(iter, gold); view = new VectorView(new DenseVector(values), 0, CARDINALITY); gold = new double[]{0.0, 1.1, 2.2}; iter = view.iterator(); checkIterator(iter, gold); gold = new double[]{1.1, 2.2}; iter = view.iterateNonZero(); checkIterator(iter, gold); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(vector, offset + this.offset, length); }
@Override public int getNumNondefaultElements() { return size(); }
return super.dot(x);
@Override public VectorView like() { return new VectorView(vector.like(), offset, size()); }
/** @return true if index is a valid index in the underlying Vector */ private boolean isInView(int index) { return index >= offset && index < offset + size(); }
return super.dot(x);
@Override public String toString() { int row = 0; int maxRowsToDisplay = 10; int maxColsToDisplay = 20; int colsToDisplay = maxColsToDisplay; if(maxColsToDisplay > columnSize()){ colsToDisplay = columnSize(); } StringBuilder s = new StringBuilder("{\n"); Iterator<MatrixSlice> it = iterator(); while ((it.hasNext()) && (row < maxRowsToDisplay)) { MatrixSlice next = it.next(); s.append(" ").append(next.index()) .append(" =>\t") .append(new VectorView(next.vector(), 0, colsToDisplay)) .append('\n'); row ++; } String returnString = s.toString(); if (maxColsToDisplay <= columnSize()) { returnString = returnString.replace("}", " ... } "); } if(maxRowsToDisplay <= rowSize()) return returnString + ("... }"); else{ return returnString + ("}"); } }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(vector, offset + this.offset, length); }
@Test public void testIterator() throws Exception { VectorView view = new VectorView(new DenseVector(values), OFFSET, CARDINALITY); double[] gold = {1.1, 2.2, 3.3}; Iterator<Vector.Element> iter = view.iterator(); checkIterator(iter, gold); iter = view.iterateNonZero(); checkIterator(iter, gold); view = new VectorView(new DenseVector(values), 0, CARDINALITY); gold = new double[]{0.0, 1.1, 2.2}; iter = view.iterator(); checkIterator(iter, gold); gold = new double[]{1.1, 2.2}; iter = view.iterateNonZero(); checkIterator(iter, gold); }
@Override public int getNumNondefaultElements() { return size(); }
@Override public String toString() { int row = 0; int maxRowsToDisplay = 10; int maxColsToDisplay = 20; int colsToDisplay = maxColsToDisplay; if(maxColsToDisplay > columnSize()){ colsToDisplay = columnSize(); } StringBuilder s = new StringBuilder("{\n"); for (MatrixSlice next : this.transpose()) { if (row < maxRowsToDisplay) { s.append(" ") .append(next.index()) .append(" =>\t") .append(new VectorView(next.vector(), 0, colsToDisplay)) .append('\n'); row++; } } String returnString = s.toString(); if (maxColsToDisplay <= columnSize()) { returnString = returnString.replace("}", " ... }"); } if (maxRowsToDisplay <= rowSize()) { return returnString + "... }"; } else { return returnString + "}"; } }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(vector, offset + this.offset, length); }
/** @return true if index is a valid index in the underlying Vector */ private boolean isInView(int index) { return index >= offset && index < offset + size(); }
@Test public void testVectorView() { RandomAccessSparseVector vec1 = new RandomAccessSparseVector(3); RandomAccessSparseVector vec2 = new RandomAccessSparseVector(6); SequentialAccessSparseVector vec3 = new SequentialAccessSparseVector(3); SequentialAccessSparseVector vec4 = new SequentialAccessSparseVector(6); Vector vecV1 = new VectorView(vec1, 0, 3); Vector vecV2 = new VectorView(vec2, 2, 3); Vector vecV3 = new VectorView(vec3, 0, 3); Vector vecV4 = new VectorView(vec4, 2, 3); doTestVectors(vecV1, vecV2); doTestVectors(vecV3, vecV4); }
@Override public VectorView like() { return new VectorView(vector.like(), offset, size()); }