Hi there,

I've been using Numpy for several years and appreciate it very much.

The following minimal code has been tried on Python 3.4 and 3.5, with Numpy
1.8 and Numpy 1.11, respectively.  I want to temporarily change the way
that a Numpy array is printed, then change it back.

import numpy as np

a = np.random.random((4,3))
print(a, "\n")
opt = np.get_printoptions()
np.set_printoptions(precision = 3, suppress = True)
print(a, "\n")
np.set_printoptions(opt)
print(a, "\n\nDone.\n")


Here is the traceback:


Traceback (most recent call last):
  File "set_printoptions test.py", line 11, in <module>
    print(a, "\n\nDone.\n")
  File "/usr/lib/python3/dist-packages/numpy/core/numeric.py", line 1615,
in array_str
    return array2string(a, max_line_width, precision, suppress_small, ' ',
"", str)
  File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 454,
in array2string
    separator, prefix, formatter=formatter)
  File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 328,
in _array2string
    _summaryEdgeItems, summary_insert)[:-1]
  File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 523,
in _formatArray
    summary_insert)
  File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 497,
in _formatArray
    word = format_function(a[-i]) + separator
  File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 616,
in __call__
    s = self.format % x
AttributeError: 'FloatFormat' object has no attribute 'format'


It took me a while to discover the bug, on the second to last line.  That
line should read:

np.set_printoptions(**opt)


This unpacks the dictionary, opt, which was retrieved earlier in the
program with the call to get_printoptions.

I am wondering why set_printoptions would accept the dictionary as a single
argument.  Shouldn't that raise a TypeError or something?

The AttributeError that is raised the next time that one attempts to print
a numpy array is remote from the problem, and thus rather uninformative,
which is why I did not immediately diagnose my error.

Should this be considered a Numpy bug, or is there some reason that
set_printoptions would legitimately need to accept a dictionary as a single
argument?

-- 
*John J. Ladasky Jr., Ph.D.*
*Research Scientist*
*International Technological University*
*2711 N. First St, San Jose, CA 95134 USA*
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to