Logo ROOT  
Reference Guide
pyroot001_arrayInterface.py File Reference

Namespaces

namespace  pyroot001_arrayInterface
 

Detailed Description

View in nbviewer Open in SWAN This tutorial illustrates the conversion of STL vectors and TVec 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()
# Create a vector ROOT object and assign values
# Note that this works as well with a TVec
vec = ROOT.std.vector("float")(2)
vec[0] = 1
vec[1] = 2
print("Content of the ROOT vector object: {}".format([x for x in vec]))
# Interface ROOT vector with a numpy array
array = np.asarray(vec)
print("Content of the associated numpy array: {}".format([x for x in array]))
# The numpy array adopts the memory of the vector without copying the content.
# Note that the first entry of the numpy array changes when assigning a new
# value to the first entry of the ROOT vector.
vec[0] = 42
print(
"Content of the numpy array after changing the first entry of the ROOT vector: {}".
format([x for x in array]))
# Use numpy features on data of ROOT objects
print("Mean of the numpy array entries: {}".format(np.mean(array)))
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
Content of the ROOT vector object: [1.0, 2.0]
Content of the associated numpy array: [1.0, 2.0]
Content of the numpy array after changing the first entry of the ROOT vector: [42.0, 2.0]
Mean of the numpy array entries: 22.0
Date
April 2018
Author
Stefan Wunsch

Definition in file pyroot001_arrayInterface.py.