如何用 incanter 更改矩阵的元素?

How to change the matrix's element with incanter?

提问人:madeinQuant 提问时间:12/16/2020 更新时间:12/16/2020 访问量:47

问:

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

(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)
Matrix Clojure incanter

评论


答:

3赞 akond 12/16/2020 #1
(require '[clojure.core.matrix :as m])

(m/mset! A 0 0 -1)

评论

0赞 madeinQuant 12/16/2020
谢谢。我可以问一个问题吗?在“[”前面有或没有(')和有什么区别?
0赞 madeinQuant 12/16/2020
我收到错误消息“没有实现方法:set-2d!我正在将 [incanter “1.5.7”] 与 clojure “1.10.1” 一起使用,incanter 1.9.3 与 clojure “1.10.1” 不兼容,无论如何,感谢您的帮助。
1赞 madeinQuant 12/16/2020 #2

感谢您的帮助。复习完这本书后,.找到修复错误的过程。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