File tree Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Original file line number Diff line number Diff line change @@ -1393,15 +1393,12 @@ def _reshape_2D(X, name):
1393
1393
"""
1394
1394
# Iterate over columns for ndarrays, over rows otherwise.
1395
1395
X = np .atleast_1d (X .T if isinstance (X , np .ndarray ) else np .asarray (X ))
1396
- if X .ndim == 1 and X . dtype . type != np . object_ :
1396
+ if X .ndim == 1 and not isinstance ( X [ 0 ], collections . abc . Iterable ) :
1397
1397
# 1D array of scalars: directly return it.
1398
1398
return [X ]
1399
1399
elif X .ndim in [1 , 2 ]:
1400
- if hasattr (X [0 ], '__len__' ):
1401
- # 2D array, or 1D array of iterables: flatten them first.
1402
- return [np .reshape (x , - 1 ) for x in X ]
1403
- else :
1404
- return [X ]
1400
+ # 2D array, or 1D array of iterables: flatten them first.
1401
+ return [np .reshape (x , - 1 ) for x in X ]
1405
1402
else :
1406
1403
raise ValueError ("{} must have 2 or fewer dimensions" .format (name ))
1407
1404
Original file line number Diff line number Diff line change @@ -482,3 +482,24 @@ def test_flatiter():
482
482
483
483
assert 0 == next (it )
484
484
assert 1 == next (it )
485
+
486
+
487
+ def test_reshape2d ():
488
+ class dummy ():
489
+ pass
490
+ x = [dummy () for j in range (5 )]
491
876F
+ xnew = cbook ._reshape_2D (x , 'x' )
492
+ assert np .shape (xnew ) == (1 , 5 )
493
+
494
+ x = np .arange (5 )
495
+ xnew = cbook ._reshape_2D (x , 'x' )
496
+ assert np .shape (xnew ) == (1 , 5 )
497
+
498
+ x = [[dummy () for j in range (5 )] for i in range (3 )]
499
+ xnew = cbook ._reshape_2D (x , 'x' )
500
+ assert np .shape (xnew ) == (3 , 5 )
501
+
502
+ # this is strange behaviour, but...
503
+ x = np .random .rand (3 , 5 )
504
+ xnew = cbook ._reshape_2D (x , 'x' )
505
+ assert np .shape (xnew ) == (5 , 3 )
You can’t perform that action at this time.
0 commit comments