Loading [MathJax]/jax/output/HTML-CSS/config.js
ROOT
6.14/05
Reference Guide
ROOT Home
Main Page
Tutorials
Functional Parts
+
Namespaces
Namespace List
+
Namespace Members
+
All
<
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
<
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
u
w
x
+
Enumerations
a
e
f
g
m
p
t
v
w
y
+
Enumerator
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
w
+
All Classes
Class List
Class Index
Class Hierarchy
+
Class Members
+
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
+
Enumerations
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
w
y
+
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
+
Properties
f
+
Related Functions
:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Files
File List
+
File Members
+
All
1
2
3
4
5
6
7
8
9
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Enumerations
c
e
f
i
l
m
p
r
u
x
+
Enumerator
a
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
u
v
w
+
Macros
1
2
3
4
5
6
7
8
9
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Release Notes
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
tutorials
pyroot
pyroot001_arrayInterface.py
Go to the documentation of this file.
1
## \file
2
## \ingroup tutorial_pyroot
3
## \notebook -nodraw
4
## This tutorial illustrates the conversion of STL vectors and TVec to numpy
5
## arrays without copying the data.
6
## The memory-adoption is achieved by the dictionary __array_interface__, which
7
## is added dynamically to the Python objects by PyROOT.
8
##
9
## \macro_code
10
##
11
## \date April 2018
12
## \author Stefan Wunsch
13
14
import
ROOT
15
from
sys
import
exit
16
17
try
:
18
import
numpy
as
np
19
except
:
20
exit()
21
22
# Create a vector ROOT object and assign values
23
# Note that this works as well with a TVec
24
vec = ROOT.std.vector(
"float"
)(2)
25
vec[0] = 1
26
vec[1] = 2
27
print(
"Content of the ROOT vector object: {}"
.format([x
for
x
in
vec]))
28
29
# Interface ROOT vector with a numpy array
30
array = np.asarray(vec)
31
print(
"Content of the associated numpy array: {}"
.format([x
for
x
in
array]))
32
33
# The numpy array adopts the memory of the vector without copying the content.
34
# Note that the first entry of the numpy array changes when assigning a new
35
# value to the first entry of the ROOT vector.
36
vec[0] = 42
37
print(
38
"Content of the numpy array after changing the first entry of the ROOT vector: {}"
.
39
format([x
for
x
in
array]))
40
41
# Use numpy features on data of ROOT objects
42
print(
"Mean of the numpy array entries: {}"
.format(np.mean(array)))