0

如何更改矩阵中的元素?根据 Incanter 文档,该库建立在 Clatrix 之上。使用 Clatrix,使用命令在矩阵中设置一个元素(set A 1 2 0)。请评论如何在 incanter 中设置元素。谢谢你。

(ns cljsl.optimization
  (:require [incanter.core :as i]
            [incanter.stats :as s]))

;; create a matrix  
cljsl.examples=> (def A (i/matrix [[0 1 2] [3 4 5]]))

cljsl.examples=> A
 A 2x3 matrix
 -------------
 0.00e+00  1.00e+00  2.00e+00 
 3.00e+00  4.00e+00  5.00e+00 

;; the view the item 
cljsl.examples=> (i/$ 0 0 A)
0.0

;; element can be set with Clatrix, unfortunately, it don't correct with Incanter.
cljsl.examples=> (cl/set A 1 2 0)
4

2 回答 2

3
(require '[clojure.core.matrix :as m])

(m/mset! A 0 0 -1)
于 2020-12-16T11:56:55.427 回答
1

谢谢您的帮助。在审查了这本书Clojure for Machine LearningClojure for Data Science。找到修复错误的程序。

  1. 将以下依赖项添加到project.clj文件中。

    [clatrix "0.5.0"]
    
  2. 命名空间声明

    (ns cljsl.optimization
     (:require [clatrix.core :as cl]
               [incanter.core :as i]
               [incanter.stats :as s]))
    
  3. 测试

    cljsl.optimization=> (def A (i/matrix [[0 1 2] [3 4 5]]))
    #'cljsl.optimization/A
    cljsl.optimization=> A
    A 2x3 matrix
    -------------
    0.00e+00  1.00e+00  2.00e+00 
    3.00e+00  4.00e+00  5.00e+00
    
    ljsl.optimization=> (cl/set A 1 2 0)
    #object[org.jblas.DoubleMatrix 0x1c951881 "[0.000000, 1.000000, 2.000000; 3.000000, 4.000000, 0.000000]"]
    cljsl.optimization=> A
    A 2x3 matrix
    -------------
    0.00e+00  1.00e+00  2.00e+00 
    3.00e+00  4.00e+00  0.00e+00 
    
于 2020-12-16T14:11:25.567 回答