如何在Scala中总结几个向量?

时间:2016-08-03 13:38:26

标签: scala vector tuples

假设我需要对三个向量求和:

$(document).ready(function() {
var button1 = $("#sidebarButton1");
var content1 = $("#sidebarContent1");
button1.mouseenter(function() {     
    content1.queue('collapsequeue',function(){
        content1.collapse('show');
    });
    if (!content1.hasClass("collapsing")) {
        content1.dequeue("collapsequeue");
    }
});
button1.mouseleave(function() { 
    content1.queue('collapsequeue',function(){
        content1.collapse('hide');
    });
    if (!content1.hasClass("collapsing")) {
        content1.dequeue("collapsequeue");
    }
});
content1.on("shown.bs.collapse hidden.bs.collapse", function(){
    content1.dequeue("collapsequeue");
});
});

如果我以这种方式对5-6个向量求和,那么我最终会得到4-5个嵌套元组。有没有更好的方法来总结几个向量?

2 个答案:

答案 0 :(得分:4)

Vector(v1,v2,v3).transpose.map(_。sum)

答案 1 :(得分:1)

请注意内存分配,具体取决于您的矢量大小,可能不是您想要的。避免它的一种方法是完全必要或做这样的事情:

def sum(v: Vector[Int], vs: Vector[Int]*): Vector[Int] = {
  val ixs = 0 until v.length
  for {
    _ <- v.slice(0, 1) // Hint for CanBuildFrom
    ix <- ixs
  } yield vs.foldLeft(v(ix))(_ + _(ix))
}

scala> sum(Vector(1,2,3), Vector(4,5,6), Vector(7, 8, 9))
res0: Vector[Int] = Vector(12, 15, 18)