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.

train.rn
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.

predict.rn
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.

SymbolDescriptionExample
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.

SymbolDescriptionExample
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);

Notes