沿指定维度连接嵌套向量

时间:2013-12-26 20:00:35

标签: clojure clojure-contrib

给定两个嵌套向量x和y,其中x是

 (def x [[1 2] [3 4]])

和y是

 (def y [[5 6] [7 8]])

如何沿着数组连接嵌套向量x和y由附加输入d指定的维度?

即,给定x,y和d = 1,样本输出将是:

[[1 2] [3 4] [5 6] [7 8]]

其中y成为新嵌套向量的第三行和第四行。

对于d = 1,我试过

(vec (concat [[1 2] [3 4]] [[5 6] [7 8]].

如果d = 2且初始x和y,则样本输出为:

[[1 2 5 6] [3 4 7 8]]

这是我最不确定的情况。

在d = 3的情况下,x和y将保持不变,因为它们是2 x 2.因此,x和y将不受影响地输出。

1 个答案:

答案 0 :(得分:1)

core.matrix库非常适合沿任意维度切割矩阵:

project.clj:

(defproject hello "0.1.0-SNAPSHOT"                                 
  :description "FIXME: write description"                          
  :url "http://example.com/FIXME"                                  
  :license {:name "Eclipse Public License"                         
            :url "http://www.eclipse.org/legal/epl-v10.html"}      
  :dependencies [[org.clojure/clojure "1.5.1"]                     
                 [net.mikera/core.matrix "0.18.0"]]                
  :source-paths ["dev"])                                           

您好/ matric.clj:

(ns hello.matrix                                        
  (:refer-clojure :exclude [* - + == /])                
  (:use [clojure.core.matrix]                           
        [clojure.core.matrix.operators]                 
        [clojure.pprint]))                              

(def x (matrix [[1 2] [3 4]]))                          
(def y (matrix [[5 6] [7 8]]))                          
(def xy (matrix [x y]))                                 

(pprint (slices xy 0))                                  
(pprint (slices xy 1))                                  
(pprint (slices xy 2))