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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
PyGame贪吃蛇的实现代码示例
Nov 21 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
Python中six模块基础用法
Dec 08 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
python实现录音功能(可随时停止录音)
Oct 26 Python
python 模拟登陆163邮箱
Dec 15 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 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
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
javascript实现连续赋值
2015/08/10 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
深入理解python中的select模块
2017/04/23 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python实现中值滤波去噪方式
2019/12/18 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
工厂会计员职责
2014/02/06 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS