gpt4 book ai didi

python numpy格式化打印的实例

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python numpy格式化打印的实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.问题描述 。

在使用numpy的时候,我们经常在debug的时候将numpy数组打印下来,但是有的时候数组里面都是小数,数组又比较大,打印下来的时候非常不适合观察。这里主要讲一下如何让numpy打印的结果更加简洁 。

2.问题解决 。

这里需要使用numpy的set_printoptions函数,对应numpy源码如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def set_printoptions(precision=None, threshold=None, edgeitems=None,
       linewidth=None, suppress=None,
       nanstr=None, infstr=None,
       formatter=None):
  """
  Set printing options.
  These options determine the way floating point numbers, arrays and
  other NumPy objects are displayed.
  Parameters
  ----------
  precision : int, optional
   Number of digits of precision for floating point output (default 8).
  threshold : int, optional
   Total number of array elements which trigger summarization
   rather than full repr (default 1000).
  edgeitems : int, optional
   Number of array items in summary at beginning and end of
   each dimension (default 3).
  linewidth : int, optional
   The number of characters per line for the purpose of inserting
   line breaks (default 75).
  suppress : bool, optional
   Whether or not suppress printing of small floating point values
   using scientific notation (default False).
  nanstr : str, optional
   String representation of floating point not-a-number (default nan).
  infstr : str, optional
   String representation of floating point infinity (default inf).
  formatter : dict of callables, optional

这里我们主要用到其中的两个属性:

设置precision来控制小数点后面最多显示的位数 。

设置suppress来取消使用科学计数法 。

2.1 简单示例 。

一个简单的利用set_printoptions的例子如下所示:

?
1
2
3
4
5
6
7
8
9
10
import numpy as np
a = np.random.random(3)
print('before set options: \n {}'.format(a))
np.set_printoptions(precision=3, suppress=True)
print('after set options: \n {}'.format(a))
>>>
before set options:
  [ 0.05856348 0.5417039 0.76520603]
after set options:
  [ 0.059 0.542 0.765]

可以看到,设置了打印的options之后,打印下来的结果简洁了很多,绝大多数时候我们只需要观察简洁的打印结果,太过精确的结果反而会因为占位太长不易于观察 。

2.2完整示例 。

2.1的例子中存在的一个问题是,一旦我们在程序的某一行设置了printoptions之后,接下来所有的打印过程都会受到影响,然而有的时候我们并不希望如此,这个时候我们可以添加一个上下文管理器,只在规定的上下文环境当中设置我们需要的打印参数,其他地方仍然使用默认的打印参数,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import numpy as np
from contextlib import contextmanager
@contextmanager
def printoptions(*args, **kwargs):
  original_options = np.get_printoptions()
  np.set_printoptions(*args, **kwargs)
  try:
   yield
  finally:
   np.set_printoptions(**original_options)
x = np.random.random(3)
y = np.array([1.5e-2, 1.5, 1500])
print('-----------before set options-----------')
print('x = {}'.format(x))
print('y = {}'.format(y))
with printoptions(precision=3, suppress=True):
  print('------------set options------------')
  print('x = {}'.format(x))
  print('y = {}'.format(y))
print('---------------set back options-------------')
print('x = {}'.format(x))
print('y = {}'.format(y))
>>>
-----------before set options-----------
x = [ 0.3802371 0.7929781 0.14008782]
y = [ 1.50000000e-02 1.50000000e+00 1.50000000e+03]
------------set options------------
x = [ 0.38 0.793 0.14 ]
y = [ 0.015  1.5 1500. ]
---------------set back options-------------
x = [ 0.3802371 0.7929781 0.14008782]
y = [ 1.50000000e-02 1.50000000e+00 1.50000000e+03]

上面的程序中,我们通过使用contextlib里面的contextmanager为函数set_printoptions设置了上下文,在执行with里面的代码之前,设置打印的参数为precison=3,suppress=True,当跳出with代码块的时候,将打印参数设置为原来默认的打印参数.

这篇python numpy格式化打印的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/yaoqi_isee/article/details/77720792 。

最后此篇关于python numpy格式化打印的实例的文章就讲到这里了,如果你想了解更多关于python numpy格式化打印的实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com