One main advantage of introducing numpy to hold the data is to ensure the data pointer has an owner that is refcounted. Otherwise `DecisionTreeClassifier().fit(X, y).tree_.children_left` accesses unallocated memory.