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数据库的连接实现方法与注意事项
Feb 27 Python
Python正则表达式完全指南
May 25 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
python 实现目录复制的三种小结
Dec 04 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Django操作session 的方法
Mar 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
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
老师推荐信
2013/10/28 职场文书
无毒社区工作方案
2014/05/23 职场文书
学校欢迎标语
2014/06/18 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
法人代表证明书格式
2014/10/01 职场文书
详解nginx location指令
2022/01/18 Servers
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL