This tutorial illustrates the conversion of RVec to numpy arrays without copying the data.
The memory-adoption is achieved by the dictionary array_interface, which is added dynamically to the Python objects by PyROOT.
import ROOT
from sys import exit
try:
import numpy as np
except:
exit()
vec[0] = 1
vec[1] = 2
print("Content of the ROOT vector object: {}".format([x for x in vec]))
array = np.asarray(vec)
print("Content of the associated numpy array: {}".format([x for x in array]))
vec[0] = 42
print(
"Content of the numpy array after changing the first entry of the ROOT vector: {}".
format([x for x in array]))
print("Mean of the numpy array entries: {}".format(np.mean(array)))
Content of the ROOT vector object: [1.0, 2.0]
Content of the associated numpy array: [np.float32(1.0), np.float32(2.0)]
Content of the numpy array after changing the first entry of the ROOT vector: [np.float32(42.0), np.float32(2.0)]
Mean of the numpy array entries: 22.0
- Date
- April 2018
- Author
- Stefan Wunsch
Definition in file vo008_numpyInterface.py.