numpy 的本地范围 set_printoptions
Local scope for numpy set_printoptions
np.set_printoptions 允许自定义 numpy 数组的 漂亮打印 。但是,对于不同的用例,我希望有不同的打印选项。
理想情况下,无需每次都重新定义整个选项即可完成此操作。我正在考虑使用本地范围,例如:
with np.set_printoptions(precision=3):
print my_numpy_array
但是,set_printoptions
似乎不支持 with
语句,因为会抛出错误 (AttributeError: __exit__
)。有什么方法可以在不创建自己的漂亮印刷品的情况下完成这项工作 class?也就是说,我知道我可以创建自己的上下文管理器:
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]
但是,有没有比创建新的 class 更直接(最好是已经内置)的东西?
尝试
np.array_repr(x, precision=6, suppress_small=True)
或采用 precision
等关键字的相关函数之一。看起来它可以控制许多(如果不是全部的话)打印选项。
所以基于@unutbu给出的link,而不是使用
with np.set_printoptions(precision=3):
print (my_numpy_array)
我们应该使用:
with np.printoptions(precision=3):
print my_numpy_array
这适用于我的情况。如果事情似乎没有改变,请尝试操纵打印选项的其他参数,例如linewidth = 125, edgeitems = 7, threshold = 1000
等等。
np.set_printoptions 允许自定义 numpy 数组的 漂亮打印 。但是,对于不同的用例,我希望有不同的打印选项。
理想情况下,无需每次都重新定义整个选项即可完成此操作。我正在考虑使用本地范围,例如:
with np.set_printoptions(precision=3):
print my_numpy_array
但是,set_printoptions
似乎不支持 with
语句,因为会抛出错误 (AttributeError: __exit__
)。有什么方法可以在不创建自己的漂亮印刷品的情况下完成这项工作 class?也就是说,我知道我可以创建自己的上下文管理器:
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]
但是,有没有比创建新的 class 更直接(最好是已经内置)的东西?
尝试
np.array_repr(x, precision=6, suppress_small=True)
或采用 precision
等关键字的相关函数之一。看起来它可以控制许多(如果不是全部的话)打印选项。
所以基于@unutbu给出的link,而不是使用
with np.set_printoptions(precision=3):
print (my_numpy_array)
我们应该使用:
with np.printoptions(precision=3):
print my_numpy_array
这适用于我的情况。如果事情似乎没有改变,请尝试操纵打印选项的其他参数,例如linewidth = 125, edgeitems = 7, threshold = 1000
等等。