csv
Read CSV files into arrays or matrices: built for MNIST-scale training pipelines.
benutzen "csv" at the top of your file.
Use read when you want a nested array of rows. For large datasets, prefer readToMatrix or readToMatrixT: they load directly into math matrices without intermediate Rain arrays.
Column indices are zero-based. sliceCols(data, 1, 785) reads pixel columns 1-784 and skips column 0 (the label in MNIST CSVs).
MNIST load (memory-efficient)
Stream large CSV files row by row without loading everything.
benutzen "csv";
benutzen "math";
var SCALE = 1.0 / 255.0;
// (784, 60000): transposed and scaled in one C pass
var X_train = csv::readToMatrixT("mnist_train.csv", 1, 1, 785, SCALE);
var train_labels = csv::readLabels("mnist_train.csv", 1, 0);
var X_test = csv::readToMatrixT("mnist_test.csv", 1, 1, 785, SCALE);
var test_labels = csv::readLabels("mnist_test.csv", 1, 0);Simple array pipeline
Read a small CSV into arrays for quick scripts.
benutzen "csv";
benutzen "math";
var data = csv::read("mnist_test.csv");
var labels = csv::col(data, 0);
var pixels = csv::sliceCols(data, 1, 785);
var X = math::mscale(math::transpose(math::fromArray(pixels)), 1.0 / 255.0);Array API
Row-oriented CSV access: good when columns are accessed by index.
| Symbol | Description | Example |
|---|---|---|
read(path) | Read CSV → array of row arrays (each cell is a number) | benutzen "csv";
var data = csv::read("data.csv"); |
shape(data) | Returns `#[rows, cols]` | benutzen "csv";
print csv::shape(data); |
col(data, index) | Extract one column as a flat array | benutzen "csv";
var labels = csv::col(data, 0); |
sliceCols(data, start, end) | Column slice `[start, end)` per row | benutzen "csv";
var pixels = csv::sliceCols(data, 1, 785); |
sliceRows(data, start, end) | Row slice `[start, end)` | benutzen "csv";
var batch = csv::sliceRows(data, 0, 128); |
Matrix API
Load numeric CSV data directly into math matrices.
| Symbol | Description | Example |
|---|---|---|
readToMatrix(path, skip_rows, col_start, col_end) | Load column range into matrix `(n_rows, n_cols)`: no Rain row arrays | benutzen "csv";
var m = csv::readToMatrix("train.csv", 1, 1, 785); |
readToMatrixT(path, skip_rows, col_start, col_end, scale) | Load transposed `(n_cols, n_rows)` and multiply by `scale` in one pass | benutzen "csv";
var X = csv::readToMatrixT("train.csv", 1, 1, 785, 1.0 / 255.0); |
readLabels(path, skip_rows, col_idx) | Read a single column as a label array | benutzen "csv";
var labels = csv::readLabels("train.csv", 1, 0); |