-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Labels
Description
Check duplicate issues.
- Checked for duplicates
Description
For common data types, e.g. int, double, we can convert a pointer / vector to numpy array with a direct construction:
import numpy as np
import cppyy
import cppyy.ll
vec = cppyy.gbl.std.vector([-1, 0, 1])
# works
arr = np.array(vec)
# also works
arr = np.array(vec.data())
Reproducer
However for int8 (or signed char in C++), the conversion only works for a pointer, but not for a vector:
import numpy as np
import cppyy
import cppyy.ll
arr = np.array([-1, 0, 1], dtype=np.int8)
view = cppyy.ll.cast[f"signed char*"](arr.ctypes.data)
view.reshape((3,))
vec = cppyy.gbl.std.vector['signed char'](view)
# does not work (OverflowError: character argument not in range(0x110000))
arr = np.array(vec)
# works
arr = np.array(vec.data())
ROOT version
cppyy==3.5.0
Installation method
conda (bundled with root)
Operating system
Linux
Additional context
No response
Reactions are currently unavailable