python numpy格式化打印的实例


Posted in Python onMay 14, 2018

1.问题描述

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

2.问题解决

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

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的例子如下所示:

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之后,接下来所有的打印过程都会受到影响,然而有的时候我们并不希望如此,这个时候我们可以添加一个上下文管理器,只在规定的上下文环境当中设置我们需要的打印参数,其他地方仍然使用默认的打印参数,代码如下:

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格式化打印的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学Python之引用和类属性的初步理解
May 15 Python
python字符串排序方法
Aug 29 Python
python 异常处理总结
Oct 18 Python
Python iter()函数用法实例分析
Mar 17 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
PyQt5 多窗口连接实例
Jun 19 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
pytorch中的inference使用实例
Feb 20 Python
Django serializer优化类视图的实现示例
Jul 16 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python Scrapy框架原理解析
Jan 04 Python
Python常见字典内建函数用法示例
May 14 #Python
python:print格式化输出到文件的实例
May 14 #Python
查看django版本的方法分享
May 14 #Python
django 修改server端口号的方法
May 14 #Python
python字符串string的内置方法实例详解
May 14 #Python
python获取文件真实链接的方法,针对于302返回码
May 14 #Python
Python工厂函数用法实例分析
May 14 #Python
You might like
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
django删除表重建的实现方法
2019/08/28 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
HTML5等待加载动画效果
2017/07/27 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
行政上诉状范文
2015/05/23 职场文书
护理培训心得体会
2016/01/22 职场文书
高一化学教学反思
2016/02/22 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python