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使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python smtplib发送带附件邮件小程序
May 22 Python
python微信公众号之关键词自动回复
Jun 15 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python tkinter窗口最大化的实现
Jul 15 Python
如何在Django配置文件里配置session链接
Aug 06 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
如何基于Python实现数字类型转换
Feb 07 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
python面向对象版学生信息管理系统
Jun 24 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
php5 mysql分页实例代码
2008/04/10 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
jquery中this的使用说明
2010/09/06 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
Python Http请求json解析库用法解析
2020/11/28 Python
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
前台文员岗位职责
2013/12/28 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
安全责任协议书范本
2016/03/23 职场文书
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技