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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
请不要重复犯我在学习Python和Linux系统上的错误
Dec 12 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python3实现mysql导出excel的方法
Jul 31 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
python实现统计代码行数的小工具
Sep 19 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
python实现无边框进度条的实例代码
Dec 30 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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
php小偷相关截取函数备忘
2010/11/28 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python中的heapq模块源码详析
2019/01/08 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
Django组件cookie与session的具体使用
2019/06/05 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
公积金转移接收函
2014/01/11 职场文书
村党支部换届选举方案
2014/05/02 职场文书
物流管理专业求职信
2014/05/29 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang