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读写ini文件的方法
May 28 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
python带参数打包exe及调用方式
Dec 21 Python
Python函数式编程实例详解
Jan 17 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
asyncio异步编程之Task对象详解
Mar 13 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
解析左右值无限分类的实现算法
2013/06/20 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python入门篇之字符串
2014/10/17 Python
python实现报表自动化详解
2017/11/16 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
公司授权委托书
2014/04/04 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
讲文明倡议书
2015/04/29 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书