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 相关文章推荐
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
python调用c++传递数组的实例
Feb 13 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
pandas 对group进行聚合的例子
Dec 27 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
20行Python代码实现视频字符化功能
Apr 13 Python
keras实现多种分类网络的方式
Jun 11 Python
python中random模块详解
Mar 01 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
Python数据分析之pandas读取数据
Jun 02 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延迟静态绑定示例分享
2014/06/22 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
python strip()函数 介绍
2013/05/24 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python使用Tesseract库识别验证
2018/03/21 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
python中adb有什么功能
2020/06/07 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
小组合作学习反思
2014/02/18 职场文书
班班通校本培训方案
2014/03/12 职场文书
西式婚礼主持词
2014/03/13 职场文书
个人求职信范文
2014/05/24 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
生日庆典策划方案
2014/06/02 职场文书
团干部培训班心得体会
2016/01/06 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android