Based on the issue description, I understand the problem. In scikit-learn's `_estimate_mi` function, there's a comparison `discrete_features == 'auto'` that will fail when `discrete_features` is an array (numpy array or list) because comparing an array to a string produces a boolean array, not a single boolean value. This will cause issues in future numpy versions.

The fix is to use `isinstance()` to check if `discrete_features` is a string before doing the comparison. Let me create the patch:

--- a/sklearn/feature_selection/_mutual_info.py
+++ b/sklearn/feature_selection/_mutual_info.py
@@ -82,7 +82,7 @@ def _estimate_mi(X, y, discrete_features='auto', discrete_target=False,
     n_samples, n_features = X.shape
     X = X.astype(float, copy=False)
 
-    if discrete_features == 'auto':
+    if isinstance(discrete_features, str) and discrete_features == 'auto':
         discrete_features = issparse(X)
 
     if isinstance(discrete_features, bool):