Мне любопытно, существует ли какой-либо способ распечатать отформатированный numpy.arrays
, например, в некотором роде подобный этому:
x = 1.23456
print '%.3f' % x
Если я хочу распечатать numpy.array
из плаваний это печатает несколько десятичных чисел, часто в 'научном' формате, который довольно трудно считать даже для низко-размерных массивов. Однако numpy.array
по-видимому, должен быть распечатан как строка, т.е. с %s
. Существует ли решение для этого?
Вы можете использовать set_printoptions
, чтобы установить точность вывода:
import numpy as np
x=np.random.random(10)
print(x)
# [ 0.07837821 0.48002108 0.41274116 0.82993414 0.77610352 0.1023732
# 0.51303098 0.4617183 0.33487207 0.71162095]
np.set_printoptions(precision=3)
print(x)
# [ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]
И подавить
подавляет использование экспоненциальной нотации для малых чисел:
y=np.array([1.5e-10,1.5,1500])
print(y)
# [ 1.500e-10 1.500e+00 1.500e+03]
np.set_printoptions(suppress=True)
print(y)
# [ 0. 1.5 1500. ]
См. документацию для set_printoptions , чтобы узнать о других параметрах.
Чтобы применить параметры печати локально , используя NumPy 1.15.0 или новее, вы можете использовать диспетчер контекста numpy.printoptions .
Например, внутри with-suite
precision = 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
печать параметры возвращаются к настройкам по умолчанию:
print(x)
# [ 0.07334334 0.46132615 0.68935231 0.75379645 0.62424021 0.90115836
# 0.04879837 0.58207504 0.55694118 0.34768638]
Если вы используете более раннюю версию NumPy, вы можете создать диспетчер контекста сам. Например,
import numpy as np
import contextlib
@contextlib.contextmanager
def printoptions(*args, **kwargs):
original = np.get_printoptions()
np.set_printoptions(*args, **kwargs)
try:
yield
finally:
np.set_printoptions(**original)
x = np.random.random(10)
with 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]
Чтобы предотвратить удаление нулей из конца числа с плавающей запятой:
np.set_printoptions
теперь имеет параметр formatter
, который позволяет вам указать функцию форматирования для каждого типа.
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)
, который печатает
[ 0.078 0.480 0.413 0.830 0.776 0.102 0.513 0.462 0.335 0.712]
вместо
[ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]