# Module `pl.array2d`

Operations on two-dimensional arrays.

See The Guide

Dependencies: `pl.utils`, `pl.tablex`

## Functions

size (t) | return the row and column size.
column (a, key) | extract a column from the 2D array.
map (f, a, arg) | map a function over a 2D array
reduce_rows (f, a) | reduce the rows using a function.
reduce_cols (f, a) | reduce the columns using a function.
reduce2 (opc, opr, a) | reduce a 2D array into a scalar, using two operations.
map2 (f, ad, bd, a, b, arg) | map a function over two arrays.
product (f, t1, t2) | cartesian product of two 1d arrays.
flatten (t) | flatten a 2D array.
reshape (t, nrows, co) | reshape a 2D array.
swap_rows (t, i1, i2) | swap two rows of an array.
swap_cols (t, j1, j2) | swap two columns of an array.
extract_rows (t, ridx) | extract the specified rows.
extract_cols (t, cidx) | extract the specified columns.
remove_row (t, i) | remove a row from an array.
remove_col (t, j) | remove a column from an array.
parse_range (s) | parse a spreadsheet range.
range (t, rstr) | get a slice of a 2D array using spreadsheet range notation.
slice (t, i1, j1, i2, j2) | get a slice of a 2D array.
set (t, value, i1, j1, i2, j2) | set a specified range of an array to a value.
write (t, f, fmt, i1, j1, i2, j2) | write a 2D array to a file.
forall (t, row_op, end_row_op, i1, j1, i2, j2) | perform an operation for all values in a 2D array.
move (dest, di, dj, src, i1, j1, i2, j2) | move a block from the destination to the source.
iter (a, indices, i1, j1, i2, j2) | iterate over all elements in a 2D array, with optional indices.
columns (a) | iterate over all columns.
new (rows, cols, val) | new array of specified dimensions

## Functions

size (t)
  return the row and column size.

  ### Parameters:

  - t a 2d array

  ### Returns:

  1. number of rows
  2. number of cols
column (a, key)
  extract a column from the 2D array.

  ### Parameters:

  - a 2d array
  - key an index or key

  ### Returns:

  1d array
map (f, a, arg)
  map a function over a 2D array

  ### Parameters:

  - f a function of at least one argument
  - a 2d array
  - arg an optional extra argument to be passed to the function.

  ### Returns:

  2d array
reduce_rows (f, a)
  reduce the rows using a function.

  ### Parameters:

  - f a binary function
  - a 2d array

  ### Returns:

  1d array

  ### see also:

  pl.tablex.reduce
reduce_cols (f, a)
  reduce the columns using a function.

  ### Parameters:

  - f a binary function
  - a 2d array

  ### Returns:

  1d array

  ### see also:

  pl.tablex.reduce
reduce2 (opc, opr, a)
  reduce a 2D array into a scalar, using two operations.

  ### Parameters:

  - opc operation to reduce the final result
  - opr operation to reduce the rows
  - a 2D array
map2 (f, ad, bd, a, b, arg)
  map a function over two arrays. They can be both or either 2D arrays

  ### Parameters:

  - f function of at least two arguments
  - ad order of first array
  - bd order of second array
  - a 1d or 2d array
  - b 1d or 2d array
  - arg optional extra argument to pass to function

  ### Returns:

  2D array, unless both arrays are 1D
product (f, t1, t2)
  cartesian product of two 1d arrays.

  ### Parameters:

  - f a function of 2 arguments
  - t1 a 1d table
  - t2 a 1d table

  ### Returns:

  2d table

  ### Usage:

      product('..',{1,2},{'a','b'}) == {{'1a','2a'},{'1b','2b'}}

flatten (t)
  flatten a 2D array. (this goes over columns first.)

  ### Parameters:

  - t 2d table

  ### Returns:

  a 1d table

  ### Usage:

      flatten {{1,2},{3,4},{5,6}} == {1,2,3,4,5,6}

reshape (t, nrows, co)
  reshape a 2D array.

  ### Parameters:

  - t 2d array
  - nrows new number of rows
  - co column-order (Fortran-style) (default false)

  ### Returns:

  a new 2d array
swap_rows (t, i1, i2)
  swap two rows of an array.

  ### Parameters:

  - t a 2d array
  - i1 a row index
  - i2 a row index
swap_cols (t, j1, j2)
  swap two columns of an array.

  ### Parameters:

  - t a 2d array
  - j1 a column index
  - j2 a column index
extract_rows (t, ridx)
  extract the specified rows.

  ### Parameters:

  - t 2d array
  - ridx a table of row indices
extract_cols (t, cidx)
  extract the specified columns.

  ### Parameters:

  - t 2d array
  - cidx a table of column indices
remove_row (t, i)
  remove a row from an array.

  ### Parameters:

  - t a 2d array
  - i a row index
remove_col (t, j)
  remove a column from an array.

  ### Parameters:

  - t a 2d array
  - j a column index
parse_range (s)
  parse a spreadsheet range. The range can be specified either as 'A1:B2' or 'R1C1:R2C2'; a special case is a single element (e.g 'A1' or 'R1C1')

  ### Parameters:

  - s a range.

  ### Returns:

  1. start col
  2. start row
  3. end col
  4. end row
range (t, rstr)
  get a slice of a 2D array using spreadsheet range notation. @see parse_range

  ### Parameters:

  - t a 2D array
  - rstr range expression

  ### Returns:

  a slice

  ### see also:

  - array2d.parse_range
  - array2d.slice
slice (t, i1, j1, i2, j2)
  get a slice of a 2D array. Note that if the specified range has a 1D result, the rank of the result will be 1.

  ### Parameters:

  - t a 2D array
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)

  ### Returns:

  an array, 2D in general but 1D in special cases.
set (t, value, i1, j1, i2, j2)
  set a specified range of an array to a value.

  ### Parameters:

  - t a 2D array
  - value the value (may be a function)
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)

  ### see also:

  tablex.set
write (t, f, fmt, i1, j1, i2, j2)
  write a 2D array to a file.

  ### Parameters:

  - t a 2D array
  - f a file object (default stdout)
  - fmt a format string (default is just to use tostring)
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)
forall (t, row_op, end_row_op, i1, j1, i2, j2)
  perform an operation for all values in a 2D array.

  ### Parameters:

  - t 2D array
  - row_op function to call on each value
  - end_row_op function to call at end of each row
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)
move (dest, di, dj, src, i1, j1, i2, j2)
  move a block from the destination to the source.

  ### Parameters:

  - dest a 2D array
  - di start row in dest
  - dj start col in dest
  - src a 2D array
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)
iter (a, indices, i1, j1, i2, j2)
  iterate over all elements in a 2D array, with optional indices.

  ### Parameters:

  - a 2D array
  - indices with indices (default false)
  - i1 start row (default 1)
  - j1 start col (default 1)
  - i2 end row (default N)
  - j2 end col (default M)

  ### Returns:

  either value or i,j,value depending on indices
columns (a)
  iterate over all columns.

  ### Parameters:

  - a a 2D array

  ### Returns:

  each column in turn
new (rows, cols, val)
  new array of specified dimensions

  ### Parameters:

  - rows number of rows
  - cols number of cols
  - val initial value; if it's a function then use `val(i,j)`

  ### Returns:

  new 2d array

generated by LDoc 1.3.12