export interface Sample { data: Float32Array; label: number[]; } export function flatOneHot(label: number, numClasses: number) { const labelOneHot = new Array(numClasses).fill(0) as number[]; labelOneHot[label] = 1; return labelOneHot; } export function fisherYates(array: Float32Array[] | Sample[]) { const length = array.length; // need to clone array or we'd be editing original as we goo const shuffled = array.slice(); for (let i = (length - 1); i > 0; i -= 1) { let randomIndex ; randomIndex = Math.floor(Math.random() * (i + 1)); [shuffled[i], shuffled[randomIndex]] = [shuffled[randomIndex],shuffled[i]]; } return shuffled; }