Published
Edited
Aug 27, 2018
Insert cell
Insert cell
m = 50
Insert cell
n = 20
Insert cell
a = {
var a = zeros([m,n]);
fill(a, (i,j) => (Math.random()<0.6 ? 1 : 0));
return a;
}
Insert cell
show(a.transpose(0,1))
Insert cell
d = {
var d = zeros([n]);
fill(d, (i) => (1.0/(blas1.asum(a.pick(null,i)))));
return d;
}
Insert cell
score0 = {
var d = zeros([m]);
fill(d, (i) => (blas1.asum(a.pick(i,null))/n*100));
return d;
}
Insert cell
weight = {
var i = 0;
var sc = zeros([m]);
var we = zeros([n]);
fill(we, (i) => 100/n);
while(i<1000) {
gemv(1,a,we,0,sc);
gemv(1,a.transpose(1,0),sc,0,we);
cprod(d,we);
let s = blas1.asum(we);
blas1.scal(1/s*100,we);
yield we;
i++;
}
}
Insert cell
score = {
var sc = zeros([m]);
gemv(1,a,weight,0,sc);
return sc;
}
Insert cell
ndarray = require("https://bundle.run/ndarray")
Insert cell
blas1 = require("https://bundle.run/ndarray-blas-level1")

Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more