如何将 2d numpy 数组传递给 C++ pybind11?

How to pass 2d numpy array to C++ pybind11?

在 C++ pybind11 包装器中:

.def("calcSomething", 
[](py::array_t<double> const & arr1,
   py::array_t<double> const & arr2)
{
  // do calculation
}
)

在python中:

example.calcSomething(
   arr1=np.full((10, 2), 20, dtype='float64'),
   arr2=np.full((10, 2), 100, dtype='float64')
)

我收到了这条错误信息:

ValueError: array has incorrect number of dimensions: 2; expected 1

那么我应该如何将 2d 或 nd 数组传递给 pybind11?

在 pybind11 中 array_t 是一个 n-dimensional 数组,就像一个 numpy 数组。

所以没有维度限制。

错误消息可能来自其他地方。不是来自 pybind11.

至少您显示的代码不应导致此行为。