Как изменить элемент матрицы с помощью incanter?

#matrix #clojure #incanter

#матрица #clojure #incanter

Вопрос:

Как изменить элемент в матрице? Согласно документу 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)
 

Ответ №1:

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

(m/mset! A 0 0 -1)
 

Комментарии:

1. Спасибо. Могу я задать вопрос? В чем разница между with или without (‘) перед «[«?

2. Я получил сообщение об ошибке «Нет реализации метода : :set-2d!». Я использую [incanter «1.5.7»] с clojure «1.10.1», incanter 1.9.3 несовместим с clojure «1.10.1», в любом случае, спасибо за вашу помощь.

Ответ №2:

Спасибо за помощь. После просмотра книги Clojure for Machine Learning и. Clojure 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