Breeze根据列表从DenseMatrix中提取列

时间:2014-06-25 21:06:41

标签: scala matrix scientific-computing

我刚开始使用Scala中的Breeze,我正在尝试弄清楚如何从DenseMatrix中提取列,其中我要提取的列索引位于列表中。例如,如果要从Python中的numpy数组myArray中提取列1,3和6,可以编写

myArray[:,[1,3,6]]

在微风中,我尝试了类似的东西

myArray(::,(1,3,6))

但它会产生语法错误。我查看了Breeze Linear Algebra Cheat Sheet,但我只看到了提取单个列或连续列的功能。有没有办法直接指定我想要提取的列,如我的例子?

2 个答案:

答案 0 :(得分:1)

我有同样的问题;我找到的解决方法是从微风中输入数字和linalg:

import breeze.numerics._

在您发现的备忘单顶部提到过,但它很容易被遗漏,特别是如果您搜索过特定的操作(发生在我身上的事情)。 / p>

答案 1 :(得分:0)

我们使用以下内容分配密集矩阵“dm”:

import breeze.linalg._
val dm = DenseMatrix((0,1,2,3,4,5,6,7),
                     (8,9,10,11,12,13,14,15),
                     (16,17,18,19,20,21,22,23),
                     (24,25,26,27,28,29,30,31))

dm

0   1   2   3   4   5   6   7
8   9   10  11  12  13  14  15
16  17  18  19  20  21  22  23
24  25  26  27  28  29  30  31

如果我们想要提取矩阵的列(例如1,3,6),我们可以使用索引列提取矩阵的一部分

dm(::,IndexedSeq(1,3,6))

1   3   6
9   11  14
17  19  22
25  27  30

或行索引

dm(IndexedSeq(1,3),::)

8   9   10  11  12  13  14  15
24  25  26  27  28  29  30  31

谢谢。请随时发表评论