国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

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

2020-01-04 15:05:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.問(wèn)題描述

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

2.問(wèn)題解決

這里需要使用numpy的set_printoptions函數(shù),對(duì)應(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來(lái)控制小數(shù)點(diǎn)后面最多顯示的位數(shù)

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

2.1 簡(jiǎn)單示例

一個(gè)簡(jiǎn)單的利用set_printoptions的例子如下所示:

import numpy as npa = 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之后,打印下來(lái)的結(jié)果簡(jiǎn)潔了很多,絕大多數(shù)時(shí)候我們只需要觀察簡(jiǎn)潔的打印結(jié)果,太過(guò)精確的結(jié)果反而會(huì)因?yàn)檎嘉惶L(zhǎng)不易于觀察

2.2完整示例

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

import numpy as npfrom contextlib import contextmanager@contextmanagerdef 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]

上面的程序中,我們通過(guò)使用contextlib里面的contextmanager為函數(shù)set_printoptions設(shè)置了上下文,在執(zhí)行with里面的代碼之前,設(shè)置打印的參數(shù)為precison=3,suppress=True,當(dāng)跳出with代碼塊的時(shí)候,將打印參數(shù)設(shè)置為原來(lái)默認(rèn)的打印參數(shù)。

這篇python numpy格式化打印的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 额尔古纳市| 铅山县| 平和县| 图们市| 紫金县| 兴化市| 麻阳| 明星| 长治市| 长兴县| 迁西县| 五原县| 庆元县| 漠河县| 上栗县| 邮箱| 新干县| 平山县| 拉孜县| 苏尼特右旗| 岳阳市| 岳阳县| 岚皋县| 诏安县| 双峰县| SHOW| 竹溪县| 秭归县| 大埔县| 白水县| 兰溪市| 榆树市| 澄城县| 临沧市| 新民市| 永寿县| 准格尔旗| 天柱县| 水富县| 乌兰浩特市| 乌什县|