将 Java class 转换为向量 - Clojure

Convert Java class to vector - Clojure

我是 clojure 和函数式编程的新手,我需要将 Java class org.apache.commons.math3.linear.OpenMapRealMatrix 转换为 clojure 向量。

这怎么可能?

很难给出直接答案,因为从二维矩阵转换为一维向量涉及选择如何遍历矩阵。如果我们选择从左到右从上到下,一种方法看起来像这样:

(->> (for [r (range 0 (.getRowDimension matrix))]
       (vec (.getRow matrix r)))                 
     flatten                                       
     vec)       ;; this step is optional

或者如果你只有一行,那么你可以调用 (vec (.getRow matrix 0))

如果你想保留二维矩阵,下面的代码就可以了:)

(mapv #(vec (.getRow matrix %))
        (range (.getRowDimension matrix)))