Python編程:如何規範numpy中數組元素的列印輸出格式

2021-01-11 編碼那些事

引言

對於Python語言開發者,如果你經常處理大量數據運算的話,numpy是一個必不可少的程序擴展庫,它支持大維度數組與矩陣運算,提供了非常豐富的數學運算函數,並且,相對於Python自身提供的列表類型,它在運算速度上有著無與倫比的優勢。

在代碼調試過程中,我們經常會使用print函數列印查看numpy數組元素的運算結果,那麼如何規範或者自定義這種數組的輸出格式呢?

函數set_printoptions原型

numpy庫中提供了一個函數set_printoptions,通過這個函數可對列印結果進行各種設置。

其函數原型如下圖所示:

從這個函數的參數可看出,通過這個函數可對數組元素的輸出精度、元素個數門限值、是否壓縮科學計數法表示等等進行設置,甚至也可以通過formatter參數進行數組元素的完全自定義顯示。

下面通過例子簡單介紹數組元素輸出格式的幾種常用設置方法。

例1:設置數組精度

如對於數組a = [3.1415926, 1.2, 5.0],要求小數點後保留3位小數,程序代碼如下:

代碼中提供了兩種方式,一種是設置precision參數值為3,但這種方法當末尾為0時會自動省略掉。

另一種方法是使用formatter參數進行自定義設置,該參數是一個字典類型,本例中設置float類型的元素其顯示格式強制為3位小數,此時為末尾為0時不會捨去,符合題目要求。

例2:設置列印元素的個數

如對於數組包含0-19共20個元素的數組b,可通過參數threshold的值設置列印元素的個數,程序代碼如下:

參數threshold值的意義是,當元素個數大於該值時,會省略顯示,只顯示兩頭的數據,中間用省略號代替。

如上面代碼中,當threshold值設置為10時,只列印了前後各3個元素的數值。

如果將threshold的值設置為np.nan時, 則無論數組中包含多少元素,都要列印所有的元素值。

例3:設置是否以科學計數法表示

如對於數組c = [1.5e-10, 1.5, 1500],通過設置參數suppress的值,可修改數組元素中的值是否以科學計數法表示,程序代碼如下:

上面代碼中當suppress值設為True時,說明為壓縮方式,即不以科學計數法表示。

例4:完全自定義顯示

如對於包含5個值為0-1之間的隨機數的數組d,根據元素的值列印不同的信息,本例中當值大於0.5時列印「+1」,否則列印「-1」,程序代碼如下:

上面代碼中使用formatter參數實現元素輸出格式的完全自定義形式,本例字典參數中』all』表明對於所有數據類型的元素,使用lamda表達式判斷其輸出值,分別輸出「+1」和「-1」的值。

總結

本文僅演示了函數set_printoptions中幾個常用參數的設置方法,如果還有其它的設置需求(如省略列印時設置兩頭列印的元素個數等),大家可參考其幫助文檔,進行對應的設置即可。

本文由編碼那些事原創,請關注+轉發+收藏+點讚,帶你一起長知識!

相關焦點

  • Python學習第113課——numpy中用條件判斷去篩選數組中的元素
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了如何在numpy中查找數組元素的方法和技巧,現在我們學習如何用條件判斷的方式篩選數組的元素。●numpy中的數組可以直接進行比較直接上代碼:運行結果:我們看到,condition列印出來,它的結構和h的結構一樣。
  • Python學習第112課——numpy中數組查找元素和改變元素的小技巧
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了如何利用index找到ndarray數組中的一些元素,並把找到的元素生成一個新的ndarray。代碼如下:現在我們學習幾個用index找到ndarray中元素的小技巧。
  • Python NumPy面向數組的編程(附詳細代碼)
    NumPy是用於高性能數組實現的最受歡迎的Python庫:數組操作比列表操作快得多,列表操作在大數據世界中可能會擴大運行時的差異。根據librarys.io(截至2020年4月),超過4千的圖書館依賴NumPy,包括最受歡迎的數據科學軟體包Pandas和SciPy。NumPy的不同之處在於它提供的面向數組的編程風格。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。
  • 如何獲取numpy數組的真實地址?如何與ctypes數組共享內存?
    01如何獲取numpy數組元素的真實地址?在Python編程中,numpy是一個很好用的擴展程序庫,將其與SciPy庫和 Matplotlib繪圖庫一起使用,可構成一個強大的類似於Matlab的科學計算環境,有助於我們通過 Python 學習數據科學或者機器學習。在Python中,當你定義了一個numpy類型的數組後,它內部元素的真實地址如何獲得呢?
  • Python中的Numpy基礎20問
    import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 將x2轉換為三維數組,並且自定義每個軸的元素數量x2.resize((1,2,3))x2'''輸出:array([[[1, 2, 3],[4, 5, 6]]])'''如何對數組進行索引和切片操作?numpy一維數組的索引和切片操作類似python列表,這裡不多講。
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    list VS ndarraynumpy 的核心是 ndarray 對象(numpy 數組),它封裝了 python 原生的同數據類型的 n 維數組(python 數組)。numpy 數組和 python 數組之間有幾個重要的區別:numpy 數組一旦創建,其元素數量就不能再改變了。增刪 ndarray 元素的操作,意味著創建一個新數組並刪除原來的數組。
  • 如果不懂Numpy,請別說自己是Python程式設計師
    越來越多的基於 python 的科學和數學軟體包使用 numpy 數組,雖然這些工具通常都支持 python 的原生數組作為參數,但它們在處理之前會還是會將輸入的數組轉換為 numpy 的數組,而且也通常輸出為 numpy 數組。在 python 的圈子裡,numpy 的重要性和普遍性日趨增強。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • Python數據分析類庫系列-Numpy之多維數組ndarray
    你可以利用這種數組對整塊數據執行一些數學運算,其語法跟標量元素之間的運算一樣。所有的元素都乘以10。第二個例子中,每個元素都與自身相加。 筆記:在本章及全書中,我會使用標準的NumPy慣用法import numpy as np。你當然也可以在代碼中使用from numpy import *,但不建議這麼做。numpy的命名空間很大,包含許多函數,其中一些的名字與Python的內置函數重名(比如min和max)。
  • Python學習第117課——numpy中dot的運用舉例
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!
  • NumPy ndarray數組元素的獲取
    生成 ndarray 數組後,如何讀取我們所需要的數據呢?
  • Python數據分析之numpy數組全解析
    在NumPy 中,最重要的對象是稱為 ndarray 的N維數組類型,它是描述相同類型的元素集合,numpy所有功能幾乎都以ndarray為核心展開。ndarray 中的每個元素都是數據類型對象(dtype)的對象。
  • Numpy學習打卡task01
    廣泛使用的計算機視覺庫OpenCV的Python綁定利用NumPy數組來存儲和操作數據。由於具有多個通道的圖像被簡單地表示為三維數組,因此用其他數組進行索引、切片或遮蔽是訪問圖像特定像素的非常有效的方法。NumPy數組作為OpenCV中圖像、提取特徵點、濾波核等的通用數據結構,極大地簡化了編程工作流程和調試。
  • Python入門教程(二):Numpy數組基礎
    Python中的數組操作幾乎等同於Numpy數組操作,今天我們會展示用Numpy數組操作獲取數據或者子數組,對數組進行分裂,變形和連接的例子。首先,我們先介紹幾類基本的數組操作:數組的屬性確定數組的大小,形狀,儲存大小,數據類型數組的索引:獲取和設置各個元素的值數組的切分:在大的數組中獲取或設置更小的子數組
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    詳細細節請參考:python使用ctypes模塊調用DLL函數之傳遞數值、指針與字符串參數、Python使用ctypes模塊調用DLL函數之傳遞結構體參數這次講一下在Python中使用ctypes模塊調用DLL中的庫函數傳遞數組參數的情況。
  • Python使用ctypes模塊調用DLL函數之複數數組的參數傳遞
    這兒就涉及到了如何將C語言中的複數數組(Complex array)類型與Python中的數據類型進行交互的問題。在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,前面多篇文章中已經講了傳遞數值/指針/字符串參數、傳遞結構體參數、傳遞普通數組類型的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。
  • NumPy ndarray數組的創建
    NumPy 封裝了一個新的數據類型 ndarray(N-dimensional Array),它是一個多維數組對象。該對象封裝了許多常用的數學運算函數,方便我們做數據處理、數據分析等。那麼,如何生成 ndarray 呢?
  • 一文包會,教你如何熟練運用Python數值計算Numpy包
    在Python中,如果涉及到第三方包的使用,第一步要做的事情當然是將這個包導入啦!那咱們就看看Numpy包在使用時是如何進行導入的吧!首先,Numpy可將列錶轉換為數組哦上面咱們所寫的程序就是調用numpy包將列錶轉換為數組哦,好啦,咱們運行一下看看結果如何吧:下面呢,咱們再看一下numpy包中幾個基礎函數的使用方法哦!