我有一个Vector,想要从Vector中删除元素。我怎么能在Scala中做到?我的输入是Vector [2.0,3.0,0.3,1.0,4.0] - > Vector [Double]我想要一个Vector [2.0,0.3,4.0]作为输出,所以我想要从我的输入Vector ...
中删除索引1和3的元素def removeElementFromVector(input: Vector) = {
val inputAsArray = input.toArray
inputAsArray
// ...
val reducedInputAsVector = inputAsArray.toVector
}
答案 0 :(得分:0)
您可以使用filter
方法删除它们。
> val reducedInputVector = input.filter(x => !(Array(1,3) contains input.indexOf(x)))
reducedInputVector: scala.collection.immutable.Vector[Double] = Vector(2.0, 0.3, 4.0)
答案 1 :(得分:0)
我的输入是:矢量[2.0,3.0,0.3,1.0,4.0] - >矢量[双]我想要一个Vector [2.0,3.0,0.3,4.0]作为输出,所以我想删除我的输入Vector中带有索引1和3的元素。 Sry我的问题还不够明确。
答案 2 :(得分:0)
是的,您可以使用过滤器来实现它,但我们需要添加索引来删除索引处的元素:
Ex:你的矢量(scala.collection.immutable.Vector [Double]):
scala> val v1 = val v1 = Vector(2.2, 3.3, 4.4, 5.5, 6.6, 4.4)
Output: Vector(2.2, 3.3, 4.4, 5.5, 6.6, 4.4)
现在,我们将删除索引2处的元素:
scala> var indexRemove=2
scala> val v2 = v1.zipWithIndex.filter(x => x._2!=indexRemove).map(x=>x._1).toVector
Output: Vector(2.2, 3.3, 5.5, 6.6, 4.4)
现在,我们将删除索引3处的元素
scala> var indexRemove=3
scala> val v2 = v1.zipWithIndex.filter(x => x._2!=indexRemove).map(x=>x._1).toVector
Output: Vector(2.2, 3.3, 4.4, 6.6, 4.4)
希望这有帮助。
答案 3 :(得分:0)
我用申请解决了这个问题:
val vec1 = Vector(2.0,3.0,0.3,1.0, 4.0)
val vec2 = Vectors.dense(vec1.apply(0), vec1.apply(1),vec1.apply(2), vec1.apply(4))
输出
vec1: scala.collection.immutable.Vector[Double] = Vector(2.0, 3.0, 0.3, 1.0, 4.0)
vec2: org.apache.spark.mllib.linalg.Vector = [2.0,3.0,0.3,4.0]
答案 4 :(得分:0)
def deleteItem[A](row: Vector[A], item: Int): Vector[A] = {
val (a,b) = row.splitAt(item)
if (b!=Nil) a ++ b.tail else a
}