Skip to content

Commit 923620c

Browse files
Kajetan FuchsbergerKajetan Fuchsberger
authored andcommitted
new convenience method to extract lists from tensors
1 parent 9fddbad commit 923620c

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/java/org/tensorics/core/tensor/lang/OngoingTensorManipulation.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,24 @@
2323
package org.tensorics.core.tensor.lang;
2424

2525
import static com.google.common.base.Preconditions.checkArgument;
26+
import static com.google.common.collect.ImmutableList.toImmutableList;
2627

2728
import java.util.Arrays;
2829
import java.util.Collection;
2930
import java.util.HashSet;
31+
import java.util.List;
3032
import java.util.Set;
3133

3234
import org.tensorics.core.tensor.Coordinates;
3335
import org.tensorics.core.tensor.ImmutableTensor;
3436
import org.tensorics.core.tensor.ImmutableTensor.Builder;
3537
import org.tensorics.core.tensor.Position;
38+
import org.tensorics.core.tensor.Positions;
3639
import org.tensorics.core.tensor.Tensor;
3740
import org.tensorics.core.tensor.operations.TensorInternals;
3841

42+
import com.google.common.collect.ImmutableList;
43+
3944
/**
4045
* Part of the tensoric fluent API which provides methods to describe misc manipulations on a given tensor.
4146
*
@@ -91,6 +96,17 @@ public V get(Object... coordinates) {
9196
return tensor.get(coordinates);
9297
}
9398

99+
public <C> List<V> list(List<C> listCoordinateValues, Position remainingCoordinates) {
100+
return listCoordinateValues.stream().map(Position::of)//
101+
.map(p -> Positions.union(remainingCoordinates, p)) //
102+
.map(p -> get(p))//
103+
.collect(toImmutableList());
104+
}
105+
106+
public <C> List<V> list(List<C> listCoordinateValues, Object ...otherCoordinates) {
107+
return list(listCoordinateValues, Position.of(otherCoordinates));
108+
}
109+
94110
public Tensor<V> extract(Position position) {
95111
return extractTensor(position.coordinates());
96112
}

0 commit comments

Comments
 (0)