Для того, чтобы сделать Numpy дисплея поплавка массивов в произвольном формате, можно определить пользовательскую функцию, которая принимает значение с плавающей запятой в качестве входных данных и возвращает отформатированную строку:
In [1]: float_formatter = lambda x: "%.2f" % x
Здесь f
здесь означает формат с фиксированной запятой (не «научный»), а .2
означает два десятичных знака (вы можете больше узнать о форматировании строк here).
Давайте проверить его со значением поплавка:
In [2]: float_formatter(1.234567E3)
Out[2]: '1234.57'
Чтобы сделать NumPy печать всех поплавковых массивов таким образом, вы можете передать formatter=
аргумент np.set_printoptions
:
In [3]: np.set_printoptions(formatter={'float_kind':float_formatter})
Теперь NumPy напечатает все поплавковые массивы таким образом:
In [4]: np.random.randn(5) * 10
Out[4]: array([5.25, 3.91, 0.04, -1.53, 6.68]
Примечание. что это влияет только на Numpy массивов, не скаляры:
In [5]: np.pi
Out[5]: 3.141592653589793
Он также не будет затрагивать не-поплавки, сложные поплавки и т.д. - вам нужно будет определить отдельные форматтер для других скалярных типов.
Вы также должны знать, что это только влияет на то, как numpy отображает значения с плавающей точкой - фактические значения, которые будут использоваться в вычислениях, сохранят свою первоначальную точность.
Например:
In [6]: a = np.array([1E-9])
In [7]: a
Out[7]: array([0.00])
In [8]: a == 0
Out[8]: array([False], dtype=bool)
Numpy печатает a
, как если бы она была равна 0
, но это не так - она по-прежнему равна 1E-9
.
Если вы действительно хотите округлить значения в массиве таким образом, чтобы это повлияло на то, как они будут использоваться в вычислениях, вы должны использовать np.round
, как уже указывали другие.
Возможный дубликат [Как красиво печатать numpy.array без научной нотации и с заданной точностью?] (Http://stackoverflow.com/questions/2891790/how-to-pretty-printing-a-numpy- array-without-science-notation-and-with-given) –