src/core

Creates a new ndarray with specified dimensions.

All elements are uninitialized. Use newZeros, newOnes, or newFull for initialized arrays.

Parameters:

  • dims - Array of dimension sizes (must have at least 2 elements)

Returns: New NDArray with uninitialized data

Raises: ValueError if creation fails

Example:

let arr = newNDArray(@[3, 4])  # 3x4 uninitialized array

Creates a new ndarray filled with zeros.

Parameters:

  • dims - Array of dimension sizes (must have at least 2 elements)

Returns: New NDArray filled with 0.0

Raises: ValueError if creation fails

Example:

let arr = newZeros(@[3, 4])  # 3x4 array of zeros

Creates a new ndarray filled with ones.

Parameters:

  • dims - Array of dimension sizes (must have at least 2 elements)

Returns: New NDArray filled with 1.0

Raises: ValueError if creation fails

Example:

let arr = newOnes(@[3, 4])  # 3x4 array of ones

Creates a new ndarray filled with a specific value.

Parameters:

  • dims - Array of dimension sizes (must have at least 2 elements)
  • value - The value to fill the array with

Returns: New NDArray filled with the specified value

Raises: ValueError if creation fails

Example:

let arr = newFull(@[3, 4], 5.0)  # 3x4 array filled with 5.0

Creates a new ndarray from existing data.

The data is copied into the new array. Data should be in row-major order.

Parameters:

  • dims - Array of dimension sizes (must have at least 2 elements)
  • data - Array of values to copy (size must match product of dims)

Returns: New NDArray with copied data

Raises: ValueError if creation fails

Example:

let data = @[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
let arr = newFromData(@[2, 3], data)  # 2x3 array from data

Procs

proc newFromData(dims: openArray[int]; data: openArray[float]): NDArray {.
    ...raises: [ValueError], tags: [], forbids: [].}
proc newFull(dims: openArray[int]; value: float): NDArray {.
    ...raises: [ValueError], tags: [], forbids: [].}
proc newNDArray(dims: openArray[int]): NDArray {....raises: [ValueError], tags: [],
    forbids: [].}
proc newOnes(dims: openArray[int]): NDArray {....raises: [ValueError], tags: [],
    forbids: [].}

Creates a new ndarray filled with ones (int version).

Convenience overload that accepts int arrays instead of csize_t.

See also:

proc newZeros(dims: openArray[int]): NDArray {....raises: [ValueError], tags: [],
    forbids: [].}