@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
21 lines (20 loc) • 443 B
JavaScript
import { __ensureInputs } from "./ensure.js";
const median = (out, src) => {
__ensureInputs(src);
out = out || [];
for (let i = src[0].length; i-- > 0; ) {
out[i] = vmedian(src.map((x) => x[i]));
}
return out;
};
const vmedian = (a) => {
if (!a.length) return 0;
const n = a.length;
const m = n >> 1;
a = [...a].sort((a2, b) => a2 - b);
return n & 1 ? a[m] : (a[m - 1] + a[m]) * 0.5;
};
export {
median,
vmedian
};