Skip to content

symisc/sy-numpy-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

syNumpy

A C++17 library for reading and writing NumPy .npy files, with optional .npz (zip) archive support

Documentation & Homepage: https://pixlab.io/numpy-cpp-library.

Features

  • NpyArray: A container that stores the loaded array’s shape, word size, fortran order, and data in memory.
  • Load & Save:
    • syNumpy::loadNpy(...) reads from a file.
    • syNumpy::loadNpyBuffer(...) reads from a raw memory buffer.
    • syNumpy::saveNpy(...) writes or appends data.
  • Append Mode: Save with mode = "a" to extend the first dimension of an existing file (if shapes match).
  • Endian Checks: Warn if the file is big-endian while the system is little-endian (or vice versa). No auto-swapping.
  • Optional NPZ: -DSYNUMPY_ENABLE_NPZ=1 enables zip-based .npz archiving (requires zlib). Minimal example included.

Quick Start

  1. Include syNumpy.hpp in your C++17 project.
  2. Compile with -std=c++17.
  3. (Optional) Define SYNUMPY_ENABLE_NPZ=1 and link zlib (-lz) for .npz archiving.

Minimal Example

#include "syNumpy.hpp"
#include <iostream>

int main() {
    // 1) Save a float array
    {
        std::vector<float> data = {1.0f, 2.0f, 3.0f};
        syNumpy::saveNpy("floats.npy", data); // overwrites if file exists
    }

    // 2) Load it back
    {
        syNumpy::NpyArray arr = syNumpy::loadNpy("floats.npy");
        std::vector<float> loaded = arr.asVector<float>();
        std::cout << "Loaded " << loaded.size() << " floats: ";
        for (auto f : loaded) std::cout << f << " ";
        std::cout << "\n";
    }

#if SYNUMPY_ENABLE_NPZ
    // 3) Create a .npz archive with multiple arrays
    {
        syNumpy::NpzArchive zip;
        std::vector<int> arr1 = {10, 20, 30};
        std::vector<double> arr2 = {3.14, 2.71};
        zip.addArray("ints", arr1);
        zip.addArray("doubles", arr2);
        zip.save("arrays.npz");
    }
#endif
    return 0;
}

About

A C++17 library for reading and writing NumPy .npy files, with optional .npz (zip) archive support

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy