1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
//! `rust-numpy` provides Rust interfaces for [NumPy C APIs](https://docs.scipy.org/doc/numpy/reference/c-api.html), //! especially for [ndarray](https://www.numpy.org/devdocs/reference/arrays.ndarray.html) class. //! //! It uses [pyo3](https://github.com/PyO3/pyo3) for rust bindings to cpython, and uses //! [ndarray](https://github.com/bluss/ndarray) for rust side matrix library. //! //! For numpy dependency, it calls `import numpy.core` internally. So you just need numpy //! installed by `pip install numpy` or other ways in your python environment. //! You can use both system environment and `virtualenv`. //! //! This library loads numpy module automatically. So if numpy is not installed, it simply panics, //! instead of returing a result. //! //! # Example //! //! ``` //! #[macro_use] //! extern crate ndarray; //! extern crate numpy; //! extern crate pyo3; //! use pyo3::prelude::Python; //! use numpy::{ToPyArray, PyArray}; //! fn main() { //! let gil = Python::acquire_gil(); //! let py = gil.python(); //! let py_array = array![[1i64, 2], [3, 4]].to_pyarray(py); //! assert_eq!( //! py_array.as_array(), //! array![[1i64, 2], [3, 4]] //! ); //! } //! ``` #![feature(specialization)] #[macro_use] extern crate cfg_if; extern crate libc; extern crate ndarray; extern crate num_complex; extern crate num_traits; #[macro_use] extern crate pyo3; pub mod array; pub mod convert; pub mod error; pub mod npyffi; mod slice_box; pub mod types; pub use array::{ get_array_module, PyArray, PyArray1, PyArray2, PyArray3, PyArray4, PyArray5, PyArray6, PyArrayDyn, }; pub use convert::{IntoPyArray, NpyIndex, ToNpyDims, ToPyArray}; pub use error::{ArrayShape, ErrorKind, IntoPyErr, IntoPyResult}; pub use ndarray::{Ix1, Ix2, Ix3, Ix4, Ix5, Ix6, IxDyn}; pub use npyffi::{PY_ARRAY_API, PY_UFUNC_API}; pub use types::{c32, c64, NpyDataType, TypeNum};