[Rust / Python] Behandle Numpy mit PyO3 (Version August 2020)

Dies ist ein Codebeispiel, das "myfunction (x: f64) -> Array2 " aufruft, das in Rust von Python implementiert wurde. Da es sich um eine Nullkopie handelt, wird empfohlen, wenn große Daten auf der Rust-Seite generiert und von Python analysiert werden. Wird häufig verwendet Also zum Kopieren.

Cargo.toml


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

[dependencies]
pyo3 = { version = "0.11", features = ["extension-module"] }
ndarray = "0.13"
numpy = "0.11"

src/lib.rs


use pyo3::prelude::*;
use ndarray::Array2;
use numpy::{IntoPyArray, PyArray2};

#[pymodule]
fn mypackage(_py: Python, m: &PyModule) -> PyResult<()> {
    #[pyfn(m, "myfunction")]
    fn myfunction_py<'py>(py: Python<'py>, x: f64) -> &'py PyArray2<f64> {
        let arr = myfunction(x);

        arr.into_pyarray(py)
    }

    Ok(())
}

Beispiel kompilieren und ausführen:

$ cargo build --release
$ ln -s ./target/release/libmypackage.so mypackage.so
$ 
$ python3
>>> import mypackage
>>> x = 3.14
>>> arr = mypackage.myfunction(x)

Recommended Posts

[Rust / Python] Behandle Numpy mit PyO3 (Version August 2020)
Behandle Excel mit Python
Behandle Rabbimq mit Python
Erweitern Sie NumPy mit Rust
Überprüfen Sie die Version mit Python
[Python] Berechnungsmethode mit numpy
[Tipps] Behandle Athena mit Python
Behandle numpy Arrays mit f2py
Geben Sie die Python-Version mit virtualenv an
Behandeln Sie Base91-Schlüssel mit Python + Redis.
Einfache Handhabung von Listen mit Python + SQLite3
Selbstorganisierende Karte in der Python NumPy-Version
Ideone> Python-Version: 3.5 (Stand 29. August 2017)
Behandeln Sie Excel-CSV-Dateien mit Python
Verwalten Sie jede Python-Version mit Homebrew
Versuch, SQLite3 mit Python zu handhaben [Hinweis]
Behandle numpy mit Cython (Methode von memoryview)
[Übersetzung] Erste Schritte mit Rust für Python-Programmierer
Verwalten Sie die Python-Umgebung mit mehreren Versionen mit Pythonz, virtualenv
Debuggen mit VS-Code mit Boost Python Numpy
1. Mit Python 1-2 gelernte Statistiken. Berechnung verschiedener Statistiken (Numpy)
Verwenden von Intel MKL mit NumPy / SciPy (Version November 2019)
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
[Verbesserte Version] Skript zur Überwachung der CPU mit Python
Ich habe versucht, mit Python Faiss zu laufen, Go, Rust
[Python] Umgang mit japanischen Zeichen mit openCV
Löse "AtCoder Version! Arimoto (Anfänger)" mit Python!
Mein Numpy (Python)
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
# Python-Grundlagen (#Numpy 1/2)
mit Syntax (Python)
# Python-Grundlagen (#Numpy 2/2)
Bingo mit Python
Zundokokiyoshi mit Python
PYTHON2.7 64-Bit-Version
Python #Numpy Basics
Excel mit Python
[Python] Numpy Memo
Mikrocomputer mit Python
Mit Python besetzen
Text Mining mit Python ① Morphologische Analyse (re: Linux-Version)
[Python] Strukturiertes Array erstellen (heterogene Daten mit NumPy speichern)
Einfaches Scraping mit Python (JavaScript / Proxy / Cookie-kompatible Version)
Ich möchte die Optimierung mit Python und CPlex behandeln
LiNGAM (ICA-Version) mit mathematischen Formeln und Python zu verstehen
Versionsverwaltung von Node, Ruby und Python mit anyenv