Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1c7aec2

Browse files
authored
Merge pull request #11921 from jklymak/fix-reshape2d
FIX: allow reshape 2-D to return a bare 1-d list
2 parents 805370b + 9eac832 commit 1c7aec2

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

lib/matplotlib/cbook/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,7 @@ def _reshape_2D(X, name):
13951395
"""
13961396
# Iterate over columns for ndarrays, over rows otherwise.
13971397
X = np.atleast_1d(X.T if isinstance(X, np.ndarray) else np.asarray(X))
1398-
if X.ndim == 1 and X.dtype.type != np.object_:
1398+
if X.ndim == 1 and not isinstance(X[0], collections.abc.Iterable):
13991399
# 1D array of scalars: directly return it.
14001400
return [X]
14011401
elif X.ndim in [1, 2]:

lib/matplotlib/tests/test_cbook.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,3 +482,24 @@ def test_flatiter():
482482

483483
assert 0 == next(it)
484484
assert 1 == next(it)
485+
486+
487+
def test_reshape2d():
488+
class dummy():
489+
pass
490+
x = [dummy() for j in range(5)]
491+
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)

0 commit comments

Comments
 (0)