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判断windows隐藏文件的方法
Mar 21 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python常用的日期时间处理方法示例
Feb 08 Python
python 内置函数filter
Jun 01 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python中属性和描述符的正确使用
2016/08/23 Python
Python实现Linux中的du命令
2017/06/12 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
爱心募捐通知范文
2015/04/27 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang