tengo:En clojure, lo que es una forma eficiente para calcular la media de los vectores enteros
(def data [[1 3 4 7 9] [7 6 3 2 7] [1 9 8 6 2]])
Quiero promediar estos (elemento a elemento de conseguir):
[3 6 5 5 6]
Al igual que lo haría en MATLAB:
mean([1 3 4 7 9; 7 6 3 2 7; 1 9 8 6 2])
Con embrujamiento que puedo hacer:
(map #(/ % (count m)) (apply plus data))
Si los datos son bastante grandes (y tengo muchos de ellos) ¿hay una mejor manera de hacerlo?
¿Ayuda a calcular el (count m)
de antemano?
¿Ayuda de antemano a defn
el #(/ % (count m))
?
Gracias @amalloy funciona, pero no entiendo cómo '(aplicar mapa (fn ...' funcionaría, ¿no debería ser '(aplicar (mapa (fn ...'? – Ali
@Ali No , estás aplicando la función 'map' a una secuencia de argumentos: una función anónima que construimos, y luego cada elemento de la secuencia' data'. 'map' está dispuesto a aceptar argumentos" adicionales ", pasándolos junto a la función. Por ejemplo, '(map + [1 2] [10 20])' ~ = '[(+ 1 10) (+ 2 20)]'. – amalloy