Source: row_stack.mjs

import { tester, array, concatenate, asarray, atleast_2d, NDArray } from './core.mjs';

/**
 * @param {NDArray[]} arrs
 * @returns {NDArray}
 */
export function row_stack(arrs) {
	arrs = atleast_2d(...arrs);
	if (!Array.isArray(arrs)) arrs = [arrs];
	return concatenate(arrs, 0);
}

process.env.PRODUCTION ||
	tester
		.add(
			row_stack,
			() => {
				let a = array([1, 2, 3]);
				let b = array([4, 5, 6]);
				return row_stack([a, b]);
			},
			() =>
				array([
					[1, 2, 3],
					[4, 5, 6],
				])
		)
		.add(
			row_stack,
			() => {
				let a = array([[1], [2], [3]]);
				let b = array([[4], [5], [6]]);
				return row_stack([a, b]);
			},
			() => array([[1], [2], [3], [4], [5], [6]])
		);