我刚开始使用Scala中的Breeze,我正在尝试弄清楚如何从DenseMatrix中提取列,其中我要提取的列索引位于列表中。例如,如果要从Python中的numpy数组myArray
中提取列1,3和6,可以编写
myArray[:,[1,3,6]]
在微风中,我尝试了类似的东西
myArray(::,(1,3,6))
但它会产生语法错误。我查看了Breeze Linear Algebra Cheat Sheet,但我只看到了提取单个列或连续列的功能。有没有办法直接指定我想要提取的列,如我的例子?
答案 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
谢谢。请随时发表评论