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};