Serialize and deserialize arrays in BQN to the Numpy NPY format
Find a file
2024-11-15 21:35:48 +01:00
.gitignore Initial commit 2023-10-04 13:26:25 +02:00
gentest.py Fix issue with unsigned integers 2024-11-11 22:58:04 +01:00
LICENSE Add license and readme 2023-10-04 17:23:55 +02:00
npy.bqn Fix issue with unsigned integers 2024-11-11 22:58:04 +01:00
README.org Add reference to bqn-safetensors 2024-11-15 21:35:48 +01:00
tests.bqn Fix issue with unsigned integers 2024-11-11 22:58:04 +01:00

bqn-npy

This library allows to save and load BQN arrays to the binary NPY format compatible with Numpy. It can also be used to interoperate with Numpy.

See also bqn-safetensors for another array serialization format.

Limitations

The library only support homogeneous multidimensional arrays with the following Numpy dtypes:

dtype Description
<f8 little-endian 64-bit double-precision floating point number
<i4 little-endian 32-bit signed integer
<u4 little-endian 32-bit unsigned integer

All other dtypes (big-endian numbers, booleans, bytes, objects, other sizes of floats or integers) are unsupported and files containing them will raise an error when loaded.

When serializing BQN arrays, the library uses the most restrictive dtype possible. An array consisting only of positive integers will be saved as <u4, otherwise <i4 if there are negative integers, otherwise <f8 for arbitrary numbers.

Usage

SaveNpy,LoadNpy•Import"npy.bqn"

# Deserialization
arr1LoadNpy"arr1.npy"

# Serialization
arr2234•rand.Range 0  # will be saved as a floating point array
"arr2.npy" SaveNpy arr2

Tests

Run the Python script to generate test data: python gentest.py.

To run tests, run bqn tests.bqn.