inconsistent numpy dtype in python and C++
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduce el informe utilizando la extensión dummy.cpp proporcionada y el script run_dummpy.py, y ejecútalo con las versiones indicadas de Python, NumPy y Boost. Inspecciona cómo llegan los dos argumentos ndarray al binding de Boost.NumPy y verifica que cada uno conserve su dtype; se considera terminado cuando la salida de C++ coincide sistemáticamente con float32 y float64.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
I'm trying to use the boost numpy bindings. If I pass two ndarray with different dtype to C++, they don't preserve the correct dtype. Here is a simple example:
dummy.cpp:
#include <iostream>
#include <boost/python.hpp>
#include <boost/python/numpy.hpp>
namespace py = boost::python;
namespace np = boost::python::numpy;
void dummy(np::ndarray const& a, np::ndarray const& b) {
char const* at = py::extract<char const* >(py::str(a.get_dtype()));
char const* bt = py::extract<char const* >(py::str(b.get_dtype()));
std::cout << at << std::endl;
std::cout << bt << std::endl;
}
BOOST_PYTHON_MODULE(dummy) {
Py_Initialize(); // need initialize in BOOST_PYTHON_MODULE, or will get segmentation fault and core dump
np::initialize();
py::def("dummy", dummy);
}
compile
g++ -lboost_python38 -lboost_numpy38 -L$CONDA_PREFIX/lib -I$CONDA_PREFIX/include -I$CONDA_PREFIX/include/python3.8 -fPIC --shared -o dummy.so dummy.cpp
run_dummpy.py
import numpy as np
import dummy
a = np.array([[1, 2, 3], [4, 5, 6]], dtype = np.float32)
print("python", a.dtype)
b = np.array([[1, 2, 3], [4, 5, 6]], dtype = np.double)
print("python", b.dtype)
dummy.dummy(a, b)
The output is inconsistent. The first time I run it by python run_dummy.py it gives
python float32
python float64
__str__
float64
If I re-run it python run_dummy.py , it gives
python float32
python float64
float64
float64
Still not the right output.
I'm using python 3.8.2, numpy 1.18.1, and boost 1.72.0. boost is installed from anaconda conda install -c conda-forge boost
Could you help? Thanks
- Lenguaje dominante
- C++
- Estrellas
- 537
- Forks
- 223
- Merge medio
- 11 h 22 min
- PR fusionados (30 d)
- 2
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de boostorg/python
-
numpy::from_data calls vector::front and crashes (or has UB) when called with a scalar object Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
BoostDetectToolset-1.90.0.cmake file not found in an include() call in boost_python-config.cmake Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Todos los issues de boostorg/python
Issues similares
-
AuTest Bug Tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/trafficserver#13714 ·
-
bug build
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
facebookincubator/velox#19143 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
tenstorrent/tt-metal#57393 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
objectionary/eo-graphs#74 ·