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按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
Django自定义manage命令实例代码
Feb 11 Python
python中的print()输出
Apr 12 Python
简单了解python元组tuple相关原理
Dec 02 Python
Django框架models使用group by详解
Mar 11 Python
python TCP包注入方式
May 05 Python
python删除文件、清空目录的实现方法
Sep 23 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python 获取字典键值对的实现
Nov 12 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
Laravel 5 框架入门(一)
2015/04/09 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
vue-cli3.0 特性解读
2018/04/22 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
python3 求约数的实例
2019/12/05 Python
python 等差数列末项计算方式
2020/05/03 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
用python批量下载apk
2020/12/29 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
SQL面试题
2013/04/30 面试题
大学生职业生涯规划书参考模板
2014/03/05 职场文书
有关爱国演讲稿
2014/05/07 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
碧霞祠导游词
2015/02/09 职场文书
会计出纳岗位职责
2015/03/31 职场文书
新闻稿格式范文
2015/07/18 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers