row.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { factory } from '../../utils/factory.js';
  2. import { isMatrix } from '../../utils/is.js';
  3. import { clone } from '../../utils/object.js';
  4. import { validateIndex } from '../../utils/array.js';
  5. var name = 'row';
  6. var dependencies = ['typed', 'Index', 'matrix', 'range'];
  7. export var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {
  8. var {
  9. typed,
  10. Index,
  11. matrix,
  12. range
  13. } = _ref;
  14. /**
  15. * Return a row from a Matrix.
  16. *
  17. * Syntax:
  18. *
  19. * math.row(value, index)
  20. *
  21. * Example:
  22. *
  23. * // get a row
  24. * const d = [[1, 2], [3, 4]]
  25. * math.row(d, 1) // returns [[3, 4]]
  26. *
  27. * See also:
  28. *
  29. * column
  30. *
  31. * @param {Array | Matrix } value An array or matrix
  32. * @param {number} row The index of the row
  33. * @return {Array | Matrix} The retrieved row
  34. */
  35. return typed(name, {
  36. 'Matrix, number': _row,
  37. 'Array, number': function ArrayNumber(value, row) {
  38. return _row(matrix(clone(value)), row).valueOf();
  39. }
  40. });
  41. /**
  42. * Retrieve a row of a matrix
  43. * @param {Matrix } value A matrix
  44. * @param {number} row The index of the row
  45. * @return {Matrix} The retrieved row
  46. */
  47. function _row(value, row) {
  48. // check dimensions
  49. if (value.size().length !== 2) {
  50. throw new Error('Only two dimensional matrix is supported');
  51. }
  52. validateIndex(row, value.size()[0]);
  53. var columnRange = range(0, value.size()[1]);
  54. var index = new Index(row, columnRange);
  55. var result = value.subset(index);
  56. return isMatrix(result) ? result : matrix([[result]]);
  57. }
  58. });