簡體   English   中英

Pybind11 如何從 python -> c++ 傳遞 n 維 numpy 數組

[英]Pybind11 How to pass an n-dimentional numpy array from python -> c++

我有一個由 numpy 浮點數組成的 numpy 數組,我希望將其傳遞給 C++ 函數,該函數將讀取和修改數據,就好像它是 std::vector 一樣。 我正在努力弄清楚如何做到這一點。 c++ 參數類型的用途是什么:

np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], dtype=float)

這種類型聲明: py::array_t<py::array_t<float>>

產生此錯誤: Attempt to use a non-POD or unimplemented POD type as a numpy dtype

我看不到讓這個類型聲明起作用: py:array

我已經搜索了文檔、github 問題和我可以在網上找到的示例,但沒有找到任何有效或我可以理解的內容,如果有人可以幫助我,我將不勝感激:)

在 C++ 端引入 Eigen 庫並將其用於矩陣運算。 std::vector對於二維矩陣來說不是一個好的抽象......要么你必須將自己的二維索引寫入一維向量,要么你需要像std::vector<std::vector<>>那樣愚蠢的東西,它執行非常糟糕,而且還很丑。

pybind11知道自動將np.array轉換為Eigen::MatrixXf的類型轉換,因此您應該能夠將 C++ 函數編寫為采用Eigen::MatrixXf &input ,並按照您指定的方式調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM