Pretty-print a NumPy array without scientific notation and with given precision
Pretty-вывести числовой массив без научных обозначений и с заданной точностью
Как мне распечатать отформатированные массивы NumPy способом, аналогичным этому:
x = 1.23456 print('%.3f' % x)
Если я хочу напечатать numpy.ndarray число с плавающей точкой, оно выводит несколько десятичных знаков, часто в "научном" формате, который довольно сложно прочитать даже для массивов малой размерности. Однако, numpy.ndarray очевидно, должен быть напечатан в виде строки, т. Е. с %s. Есть ли решение для этого?
Чтобы применить параметры печати локально, используя NumPy 1.15.0 или более поздней версии, вы могли бы воспользоваться numpy.printoptions контекстным менеджером. Например, внутри with-suiteprecision=3 и suppress=True задаются:
x = np.random.random(10) with np.printoptions(precision=3, suppress=True): print(x) # [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]
Но за пределами with-suite параметры печати возвращаются к настройкам по умолчанию:
Используйте np.array_str для применения форматирования только к одному оператору печати. Это предоставляет подмножество функциональных возможностей np.set_printoptions.
Например:
In [27]: x = np.array([[1.1, 0.9, 1e-6]] * 3)
In [28]: print(x) [[ 1.10000000e+009.00000000e-011.00000000e-06] [ 1.10000000e+009.00000000e-011.00000000e-06] [ 1.10000000e+009.00000000e-011.00000000e-06]]
In [29]: print(np.array_str(x, precision=2)) [[ 1.10e+009.00e-011.00e-06] [ 1.10e+009.00e-011.00e-06] [ 1.10e+009.00e-011.00e-06]]