Hi!

Best solution is `AsNumpy`

with support for boolean values Indeed, booleans in this context are evil, the memory layout in numpy arrays (1 byte per bool) and in `std::vector`

(1 bit per bool) makes quite some complications.

However, try this!

```
import ROOT
import numpy as np
# Create some data on the fly with RDataFrame, plug in your own dataset!
# - a float column
# - a boolean column
# - an integer column (created from the boolean column, potentially preferred and more efficient)
df = ROOT.RDataFrame(5) \
.Define('some_float', 'float(rdfentry_)') \
.Define('some_bool', 'rdfentry_ > 2') \
.Define('some_int', 'int(some_bool)')
# Move the data to numpy arrays
data = df.AsNumpy(['some_float', 'some_bool', 'some_int'])
print(data)
# Optional: Make a matrix of floats out of it
matrix = np.vstack((data[col] for col in data)).astype(np.float)
print(matrix)
```

```
{
'some_float': ndarray([0., 1., 2., 3., 4.], dtype=float32),
'some_bool': ndarray([False, False, False, True, True], dtype=object),
'some_int': ndarray([0, 0, 0, 1, 1], dtype=int32)
}
[[0. 1. 2. 3. 4.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]]
```

Cheers,

Stefan