A simple, lightweight NumPy-like array library implemented in C for basic multi-dimensional array operations.
- supports n-dimensional arrays
- broadcasting support for basic arithmetic operations
- batched matrix multiplication
#include <goopy.h>
int main() {
// TESTCASE - tranpose()
array_t a = arange(1, 7, 1);
reshape(&a, (size_t[]){1, 2, 3}, 3);
PRINT_ARRAY(a);
array_t b = arange(1, 7, 1);
reshape(&b, (size_t[]){3, 2, 1}, 3);
PRINT_ARRAY(b);
array_t c = element_wise_mul(&a, &b);
PRINT_ARRAY(c);
deinit_array(&a);
deinit_array(&b);
deinit_array(&c);
return 0;
}
arange(start, stop, step)
- Create 1D array with range of valuesinit_array_with_zeros(shape, ndim)
- Create array filled with zerosinit_array_with_ones(shape, ndim)
- Create array filled with onesinit_array_with_scalar_value(shape, ndim, value)
- Create array filled with scalar
element_wise_add(a, b)
- Element-wise addition with broadcastingelement_wise_sub(a, b)
- Element-wise subtraction with broadcastingelement_wise_mul(a, b)
- Element-wise multiplication with broadcastingelement_wise_div(a, b)
- Element-wise division with broadcastingmatmul(a, b)
- Matrix multiplication with batch support
reshape(arr, new_shape, new_ndim)
- Reshape arraytranspose(arr)
- Transpose array (reverse all dimensions)flatten(arr)
- Flatten to 1D array
PRINT_ARRAY(arr)
- Print array contentsdeinit_array(arr)
- Free array memory
- Arrays use
int
data type only - Memory management is manual - always call
deinit_array()
for arrays you create - Broadcasting follows NumPy-like rules
- Matrix multiplication works on the last two dimensions for batched operations