row.js 1.5 KB

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