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批量同步web服务器代码核心程序
Sep 01 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
Python端口扫描简单程序
Nov 10 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
python解包概念及实例
Feb 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
php读取文件内容的几种方法详解
2013/06/26 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP代码加密的方法总结
2020/03/13 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
Python面向对象编程基础解析(二)
2017/10/26 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
python实现简单图片物体标注工具
2019/03/18 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
社区党员公开承诺书
2014/08/30 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
党员个人整改措施
2014/10/24 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python