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网络编程学习笔记(10):webpy框架
Jun 09 Python
Python中装饰器的一个妙用
Feb 08 Python
python中尾递归用法实例详解
Apr 28 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Django组件cookie与session的具体使用
Jun 05 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
python修改FTP服务器上的文件名
Sep 11 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
Python获取指定网段正在使用的IP
Dec 14 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php实现可运算的验证码
2015/11/10 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
详解Swift中属性的声明与作用
2016/06/30 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
python manage.py runserver流程解析
2019/11/08 Python
Python线程指南分享
2019/11/19 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python识别html主要文本框过程解析
2020/02/18 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
Python执行时间的几种计算方法
2020/07/31 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
骨干教师个人总结
2015/02/11 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书