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 fileinput模块使用介绍
Nov 30 Python
python3爬虫之设计签名小程序
Jun 19 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Python OrderedDict字典排序方法详解
May 21 Python
python os模块常用的29种方法使用详解
Jun 02 Python
Django CBV模型源码运行流程详解
Aug 17 Python
pycharm实现猜数游戏
Dec 07 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遍历目录viewDir函数
2009/12/15 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
网站上面有这种切换效果
2006/06/26 Javascript
用js实现随机返回数组的一个元素
2007/08/13 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
python+Django+apache的配置方法详解
2016/06/01 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
项目管理计划书
2014/01/09 职场文书
《长城》教学反思
2014/02/14 职场文书
挂科检讨书范文
2014/02/20 职场文书
自主招生教师推荐信
2014/05/10 职场文书
小学社会实践活动总结
2014/07/03 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫