numpy 0.3.0

Rust binding of NumPy C-API
docs.rs failed to build numpy-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: numpy-0.21.0

rust-numpy

Build Status Build status Crate

Rust binding of NumPy C-API

API documentation

Requirements

Note From 0.3, we migrated from rust-cpython to pyo3. If you want to use rust-cpython, use version 0.2.1 from crates.io.

Example

Please see example directory for a complete example

[lib]
name = "rust_ext"
crate-type = ["cdylib"]

[dependencies]
numpy = "0.3"
pyo3 = "^0.3.1"
ndarray = "0.11"
#![feature(use_extern_macros, specialization)]

extern crate ndarray;
extern crate numpy;
extern crate pyo3;

use ndarray::*;
use numpy::*;
use pyo3::prelude::*;

#[pymodinit]
fn rust_ext(py: Python, m: &PyModule) -> PyResult<()> {
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // You **must** write this sentence for PyArray type checker working correctly
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    let _np = PyArrayModule::import(py)?;

    // immutable example
    fn axpy(a: f64, x: ArrayViewD<f64>, y: ArrayViewD<f64>) -> ArrayD<f64> {
        a * &x + &y
    }

    // mutable example (no return)
    fn mult(a: f64, mut x: ArrayViewMutD<f64>) {
        x *= a;
    }

    // wrapper of `axpy`
    #[pyfn(m, "axpy")]
    fn axpy_py(py: Python, a: f64, x: &PyArray, y: &PyArray) -> PyResult<PyArray> {
        let np = PyArrayModule::import(py)?;
        let x = x.as_array().into_pyresult("x must be f64 array")?;
        let y = y.as_array().into_pyresult("y must be f64 array")?;
        Ok(axpy(a, x, y).into_pyarray(py, &np))
    }

    // wrapper of `mult`
    #[pyfn(m, "mult")]
    fn mult_py(_py: Python, a: f64, x: &PyArray) -> PyResult<()> {
        let x = x.as_array_mut().into_pyresult("x must be f64 array")?;
        mult(a, x);
        Ok(())
    }

    Ok(())
}

Contribution

This project is in pre-alpha version. We need your feedback. Don't hesitate to open issues!

Version

  • v0.3.0

  • v0.2.1

    • NEW: trait IntoPyErr, IntoPyResult for error translation
  • v0.2.0

    • NEW: traits IntoPyArray, ToPyArray
    • MOD: Interface of PyArray creation functions are changed
  • v0.1.1

    • Update documents
  • v0.1.0

    • First Release
    • Expose unsafe interfase of Array and UFunc API