np.set_printoptions позволяет настроить красивую печать из массивов numpy. Однако для разных вариантов использования я хотел бы иметь разные параметры печати.Локальная область для numpy set_printoptions
В идеале это было бы сделано без необходимости переопределять все параметры каждый раз. Я думал об использовании локальной области видимости, что-то вроде:
with np.set_printoptions(precision=3):
print my_numpy_array
Однако set_printoptions
, кажется, не поддерживает with
заявления, так как ошибка генерируется (AttributeError: __exit__
). Есть ли способ сделать эту работу без создания собственного красивого класса печати? Это, я знаю, что я могу создать свой собственный менеджер контекста, как:
class PrettyPrint():
def __init__(self, **options):
self.options = options
def __enter__(self):
self.back = np.get_printoptions()
np.set_printoptions(**self.options)
def __exit__(self, *args):
np.set_printoptions(**self.back)
И использовать его как:
>>> print A
[ 0.29276529 -0.01866612 0.89768998]
>>> with PrettyPrint(precision=3):
print A
[ 0.293 -0.019 0.898]
Есть, однако, что-то более простое (желательно уже встроенный), чем создавая новый класс?
Существует более компактный способ создания менеджера контекста, [показано здесь] (http://stackoverflow.com/a/2891805/190597). – unutbu
@unutbu Не знал о 'contextlib' (и о том, что ответ) спасибо! Но это все еще подразумевает определение новой функции. Я думаю, лучше, чем ничего. –