欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python numpy格式化打印的實(shí)例

 更新時(shí)間:2018年05月14日 10:09:55   作者:yj_isee  
今天小編就為大家分享一篇python numpy格式化打印的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

1.問題描述

在使用numpy的時(shí)候,我們經(jīng)常在debug的時(shí)候?qū)umpy數(shù)組打印下來,但是有的時(shí)候數(shù)組里面都是小數(shù),數(shù)組又比較大,打印下來的時(shí)候非常不適合觀察。這里主要講一下如何讓numpy打印的結(jié)果更加簡潔

2.問題解決

這里需要使用numpy的set_printoptions函數(shù),對應(yīng)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

這里我們主要用到其中的兩個(gè)屬性:

設(shè)置precision來控制小數(shù)點(diǎn)后面最多顯示的位數(shù)

設(shè)置suppress來取消使用科學(xué)計(jì)數(shù)法

2.1 簡單示例

一個(gè)簡單的利用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]


可以看到,設(shè)置了打印的options之后,打印下來的結(jié)果簡潔了很多,絕大多數(shù)時(shí)候我們只需要觀察簡潔的打印結(jié)果,太過精確的結(jié)果反而會因?yàn)檎嘉惶L不易于觀察

2.2完整示例

2.1的例子中存在的一個(gè)問題是,一旦我們在程序的某一行設(shè)置了printoptions之后,接下來所有的打印過程都會受到影響,然而有的時(shí)候我們并不希望如此,這個(gè)時(shí)候我們可以添加一個(gè)上下文管理器,只在規(guī)定的上下文環(huán)境當(dāng)中設(shè)置我們需要的打印參數(shù),其他地方仍然使用默認(rèn)的打印參數(shù),代碼如下:

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為函數(shù)set_printoptions設(shè)置了上下文,在執(zhí)行with里面的代碼之前,設(shè)置打印的參數(shù)為precison=3,suppress=True,當(dāng)跳出with代碼塊的時(shí)候,將打印參數(shù)設(shè)置為原來默認(rèn)的打印參數(shù)。

這篇python numpy格式化打印的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pycharm上的python虛擬環(huán)境移到離線機(jī)器上的方法步驟

    pycharm上的python虛擬環(huán)境移到離線機(jī)器上的方法步驟

    本人在工作中需要在離線Windows環(huán)境中使用,本文主要介紹了pycharm上的python虛擬環(huán)境移到離線機(jī)器上的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-10-10
  • Python 實(shí)現(xiàn)二叉查找樹的示例代碼

    Python 實(shí)現(xiàn)二叉查找樹的示例代碼

    這篇文章主要介紹了Python 實(shí)現(xiàn)二叉查找樹的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法示例【桶排序與基數(shù)排序】

    Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法示例【桶排序與基數(shù)排序】

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法,結(jié)合實(shí)例形式分析了桶排序與基數(shù)排序的相關(guān)原理及實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • 淺析NumPy 切片和索引

    淺析NumPy 切片和索引

    這篇文章主要介紹了NumPy 切片和索引的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)NumPy的相關(guān)知識,感興趣的朋友可以了解下。
    2020-09-09
  • Python-openpyxl表格讀取寫入的案例詳解

    Python-openpyxl表格讀取寫入的案例詳解

    這篇文章主要介紹了Python-openpyxl表格讀取寫入的案例分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Django返回json數(shù)據(jù)用法示例

    Django返回json數(shù)據(jù)用法示例

    這篇文章主要介紹了Django返回json數(shù)據(jù)用法,結(jié)合實(shí)例形式分析了jQuery通過前端ajax發(fā)送get請求及后臺使用Django接收GET請求并返回處理的json數(shù)據(jù)相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • 支持python的分布式計(jì)算框架Ray詳解

    支持python的分布式計(jì)算框架Ray詳解

    Ray是一種分布式執(zhí)行框架,便于大規(guī)模應(yīng)用程序和利用先進(jìn)的機(jī)器學(xué)習(xí)庫,今天給大家分享支持python的分布式計(jì)算框架Ray詳解,感興趣的朋友一起看看吧
    2021-07-07
  • python根據(jù)txt文本批量創(chuàng)建文件夾

    python根據(jù)txt文本批量創(chuàng)建文件夾

    這篇文章主要為大家詳細(xì)介紹了python根據(jù)txt文本批量創(chuàng)建文件夾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Django加載配置的過程詳解

    Django加載配置的過程詳解

    這篇文章主要介紹了Django加載配置的過程詳解,包括Django服務(wù)啟動 manage.py的詳細(xì)介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Pandas實(shí)現(xiàn)重命名列的4種方法

    Pandas實(shí)現(xiàn)重命名列的4種方法

    學(xué)習(xí)重命名列是數(shù)據(jù)清洗的第一步,而數(shù)據(jù)清洗是數(shù)據(jù)分析的核心部分,本文主要介紹了Pandas實(shí)現(xiàn)重命名列的4種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04

最新評論