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导出数据到Excel可读取的CSV文件的方法
May 12 Python
Python base64编码解码实例
Jun 21 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python使用functools实现注解同步方法
Feb 06 Python
使用python生成目录树
Mar 29 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
详解Python_shutil模块
Mar 15 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
django和flask哪个值得研究学习
Jul 31 Python
python实现三壶谜题的示例详解
Nov 02 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脚本的10个技巧(4)
2006/10/09 PHP
PHP 各种排序算法实现代码
2009/08/20 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
JavaScript的Cookies
2008/01/16 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
github配置使用指南
2014/11/18 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
女大学生个人求职信
2013/12/09 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
小区推广策划方案
2014/06/06 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
邀请函的格式
2015/01/30 职场文书
个性与发展自我评价
2015/03/06 职场文书
演讲比赛通讯稿
2015/07/18 职场文书