我正在定义一个以py :: array_t
我尝试通过“参数”添加默认值_a = py :: array_T({0,0,0}) 但是当我称它为“数组的维数不正确时:3;预期为1'
m.def("foo", [](py::array_t<double> Arg1,
py::array_t<bool> Arg2){
auto bar = Arg1.unchecked<1>();
auto bar2 = Arg2.unchecked<1>();
'''other simple code that doesn't alter bar or bar2'''
return bar;
},
"Arg1"_a,
"Arg2"_a = py_array<bool> ({0, 0, 0})
);
答案 0 :(得分:0)
问题是您的默认参数的值是零长度尺寸的3d数组,而不是三个元素的1d数组。
您使用py_array<bool> ({0, 0, 0})
调用的构造函数:
explicit array_t(ShapeContainer shape, const T *ptr = nullptr, handle base = handle())
: array_t(private_ctor{}, std::move(shape),
ExtraFlags & f_style ? f_strides(*shape, itemsize()) : c_strides(*shape, itemsize()),
ptr, base) { }