@@ -164,8 +164,8 @@ def _is_scipy_coo(data: DataType) -> bool:
164
164
return isinstance (data , scipy .sparse .coo_matrix )
165
165
166
166
167
- def _is_numpy_array (data : DataType ) -> bool :
168
- return isinstance (data , ( np . ndarray , np . matrix ) )
167
+ def _is_np_array_like (data : DataType ) -> bool :
168
+ return hasattr (data , "__array_interface__" )
169
169
170
170
171
171
def _ensure_np_dtype (
@@ -1051,7 +1051,7 @@ def dispatch_data_backend(
1051
1051
return _from_scipy_csr (
1052
1052
data .tocsr (), missing , threads , feature_names , feature_types
1053
1053
)
1054
- if _is_numpy_array (data ):
1054
+ if _is_np_array_like (data ):
1055
1055
return _from_numpy_array (
1056
1056
data , missing , threads , feature_names , feature_types , data_split_mode
1057
1057
)
@@ -1194,7 +1194,7 @@ def dispatch_meta_backend(
1194
1194
if _is_tuple (data ):
1195
1195
_meta_from_tuple (data , name , dtype , handle )
1196
1196
return
1197
- if _is_numpy_array (data ):
1197
+ if _is_np_array_like (data ):
1198
1198
_meta_from_numpy (data , name , dtype , handle )
1199
1199
return
1200
1200
if _is_pandas_df (data ):
@@ -1281,7 +1281,7 @@ def _proxy_transform(
1281
1281
return _transform_dlpack (data ), None , feature_names , feature_types
1282
1282
if _is_list (data ) or _is_tuple (data ):
1283
1283
data = np .array (data )
1284
- if _is_numpy_array (data ):
1284
+ if _is_np_array_like (data ):
1285
1285
data , _ = _ensure_np_dtype (data , data .dtype )
1286
1286
return data , None , feature_names , feature_types
1287
1287
if _is_scipy_csr (data ):
@@ -1331,7 +1331,7 @@ def dispatch_proxy_set_data(
1331
1331
if not allow_host :
1332
1332
raise err
1333
1333
1334
- if _is_numpy_array (data ):
1334
+ if _is_np_array_like (data ):
1335
1335
_check_data_shape (data )
1336
1336
proxy ._set_data_from_array (data ) # pylint: disable=W0212
1337
1337
return
0 commit comments