Clojure 重塑嵌套向量

Clojure 重塑嵌套向量,clojure,clojure-contrib,Clojure,Clojure Contrib,给定一个嵌套向量a,即3 x 4矩阵 [[1 4 7 10] [2 5 8 11] [3 6 9 12]] 变换,使嵌套向量矩阵现在为2 x 6 输出看起来像 [[1 3 5 7 9 11] [2 4 6 8 10 12]] 到目前为止,我还停留在这个想法的开始实施阶段 您可能需要研究: 您可能需要研究: 此函数将重塑m,使其由具有所需形状的子向量组成 (defn reshape [m & shape] (reduce (fn [vecs dim]

给定一个嵌套向量a,即3 x 4矩阵

[[1 4 7 10] [2 5 8 11] [3 6 9 12]]
变换,使嵌套向量矩阵现在为2 x 6

输出看起来像

[[1 3 5 7 9 11] [2 4 6 8 10 12]]

到目前为止,我还停留在这个想法的开始实施阶段

您可能需要研究:


您可能需要研究:


此函数将重塑m,使其由具有所需形状的子向量组成

(defn reshape [m & shape]
    (reduce (fn [vecs dim]
                (reduce #(conj %1 (subvec vecs %2 (+ dim %2)))
                        [] (range 0 (count vecs) dim)))
            (vec (flatten m)) (reverse shape)))
例如:

(reshape [1 [2 3 4] 5 6 7 8] 2 2) => [[[1 2] [3 4]] [[5 6] [7 8]]]

此函数将重塑m,使其由具有所需形状的子向量组成

(defn reshape [m & shape]
    (reduce (fn [vecs dim]
                (reduce #(conj %1 (subvec vecs %2 (+ dim %2)))
                        [] (range 0 (count vecs) dim)))
            (vec (flatten m)) (reverse shape)))
例如:

(reshape [1 [2 3 4] 5 6 7 8] 2 2) => [[[1 2] [3 4]] [[5 6] [7 8]]]

您是否希望求解任意两个矩阵,一个是维度AxB,另一个是维度CxD,其中AB=CD?可以将第一个矩阵的分量向量转换为一个长度为a*B的向量,然后将该长平面向量的范围划分为一个新的矩阵,其中长度为D的C向量用于?是的,这就是我要做的。现在我来看看如何划分范围。你想求解任意两个矩阵吗,一个是维度AxB,另一个是维度CxD,其中AB=CD?可以将第一个矩阵的分量向量转换为一个长度为a*B的向量,然后将该长平面向量的范围划分为一个新的矩阵,其中长度为D的C向量用于?是的,这就是我要做的。我现在看一下如何划分范围。