Clojure 重塑嵌套向量
给定一个嵌套向量a,即3 x 4矩阵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]
[[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向量用于?是的,这就是我要做的。我现在看一下如何划分范围。