Python
Python 3: TypeError: unsupported format string passed to numpy.ndarray.__format__
This post explains how to work around a change in how Python string formatting works for numpy arrays between Python 2 and Python 3.
I’ve been going through Kevin Markham‘s scikit-learn Jupyter notebooks and ran into a problem on the Cross Validation one, which was throwing this error when attempting to print the KFold example:
Iteration Training set observations Testing set observations
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-28-007cbab507e3> in <module>()
6 print('{} {:^61} {}'.format('Iteration', 'Training set observations', 'Testing set observations'))
7 for iteration, data in enumerate(kf, start=1):
----> 8 print('{0:^9} {1} {2:^25}'.format(iteration, data[0], data[1]))
TypeError: unsupported format string passed to numpy.ndarray.__format__We can reproduce this easily:
>>> import numpy as np
>>> "{:9}".format(np.array([1,2,3]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported format string passed to numpy.ndarray.__format__What about if we use Python 2?
>>> "{:9}".format(np.array([1,2,3]))
'[1 2 3] 'Hmmm, must be a change between the Python versions.
We can work around it by coercing our numpy array to a string:
>>> "{:9}".format(str(np.array([1,2,3])))
'[1 2 3] '| Published on Web Code Geeks with permission by Mark Needham, partner at our WCG program. See the original article here: Python 3: TypeError: unsupported format string passed to numpy.ndarray.__format__ Opinions expressed by Web Code Geeks contributors are their own. |


