當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NumPy array2string方法用法及代碼示例


Numpy 的 array2string(~) 方法返回按指定格式設置的 Numpy 數組的字符串表示形式。

此方法默認使用通過 Numpy 的 get_printoptions(~) 指定的配置。您可以使用 set_printoptions(~) 更改默認配置。

參數

1. a | array-like

輸入數組。與大多數 Numpy 方法不同,a 必須是 Numpy 數組。

2. max_line_width | int | optional

每行的最大字符數。默認情況下, max_line_width=75 ,除非通過 set_printoptions(~) 覆蓋。

3. precision | intNone | optional

要顯示的小數位數。精度為 3 意味著 3.1415 變為 3.142 。如果傳遞 None 並且 floatmode 不是 fixed ,則精度將使得這些值具有唯一微分性。默認情況下,precision=8,除非被覆蓋。

4. suppress_small | boolean | optional

是否以完整小數顯示值而不是使用科學記數法。這僅適用於絕對值小於 1e-4 或數組中最大值與最小值之比大於 1000 的浮點。默認情況下,suppress_small=False 除非被覆蓋。

5. separator | string | optional

用於分隔值的字符串。默認情況下,separator=" "(即單個空格)。

6. prefix | string | optional

請參閱下麵suffix 參數的說明。

7. suffix | string | optional

參數prefixsuffix 用於向每行添加填充。每行最多隻能容納 max_line_width-len(prefix)-len(suffix) 個字符。請注意,prefixsuffix 的長度很重要,而不是它們的實際值,因為它們不會打印出來。

8. formatter | dict<string,function> | optional

適用於不同數據類型的映射。字典的鍵值對如下:

  • key:您希望應用映射的類型

  • value:一個函數,它將類型為 key 的值作為輸入,並返回一個新值。

以下是一些主要數據類型:

類型

說明

"bool"

轉換布爾值。

"int"

轉換整數。

"float"

轉換浮點數。

"timedelta"

轉換時間增量。

"datatime"

轉換日期時間。

以下是您可以提供的一些特殊 key :

鑰匙

說明

"all"

轉換所有數據類型。

"float_kind"

轉換"float"和"longfloat"

"str_kind"

轉換"str"和"numpystr"

默認情況下,formatter=None,除非被覆蓋。

9. threshold | int | optional

如果數組中的值數量大於 threshold ,則不會獲取每個值,而是使用 ... 截斷這些值。默認情況下,threshold=1000,除非被覆蓋。

10.edgeitems | int | optional

如果發生截斷,則顯示在前麵和後麵的值的數量。默認情況下,edgeitems=3,除非被覆蓋。

11.sign | string | optional

如何處理值的符號:

說明

"-"

省略+。

"+"

在正數前麵放置一個 +。

" "

在正數前麵放置一個空格。

默認情況下,sign="-",除非被覆蓋。

10.floatmode | string | optional

如何處理浮點數的精度:

說明

"fixed"

始終顯示指定的 precision 。這導致所有浮點數具有相同的小數位。

"unique"

顯示最小小數位數,以便唯一標識值。這會忽略指定的 precision

"maxprec"

最多打印指定的 precision

"maxprec_equal"

最多打印指定的 precision ,並確保所有浮點數具有相同的小數位。

默認情況下,floatmode="maxprec_equal",除非被覆蓋。

返回值

沒有,因為此方法隻是打印在屏幕上。

例子

基本用法

顯示 3 個小數位:

a = np.array([0.000005, 3.1416])
np.arraystring(a, precision=3)



'[5.000e-06 3.142e+00]'

要獲得未修複的 precision ,請傳遞 None

a = np.array([3.14, 3.1416])
np.arraystring(a, precision=None)



'[3.14   3.1416]'

指定max_line_width

默認情況下, max_line_width=75 ,這意味著每打印行最多可以有 75 個字符:

print(np.array([12, 34, 5]))



[12 34  5]

每行最多隻打印 7 個字符:

a = np.array([12, 34, 5])
np.arraystring(a, max_line_width=7)



'[12 34\n  5]'

這是您實際打印返回的字符串時看到的內容:

print(np.arraystring(a, max_line_width=7))



[12 34
  5]

指定suppress_small

要顯示小於 1e-4 的數字的所有小數位:

a = np.array([1e-5])
np.arraystring(a, suppress_small=True)



'[0.00001]'

suppress=False 的默認行為如下:

a = np.array([1e-5])
np.arraystring(a)



'[1.e-05]'

指定分隔符

要覆蓋單個空格的默認分隔符,請傳入 separator 參數:

a = np.array([3,4,5])
np.arraystring(a, separator="A")



'[3A4A5]'

指定抑製

要顯示小於 1e-4 的數字的所有小數位:

a = np.array([1e-5])
np.arraystring(a, suppress_small=True)



'[0.00001]'

suppress=False 的默認行為如下:

a = np.array([1e-5])
np.arraystring(a)



'[1.e-05]'

指定前綴和後綴

prefixsuffix 的長度用於向每行添加填充:

a = np.arange(5)
np.arraystring(a, max_line_width=15, prefix="BB", suffix="AAA")



'[0 1 2 3\n   4]'

這裏,每一行的格式如下:

prefix + array2string(a) + suffix

每行最多隻能容納15-len(prefix)-len(suffix)=10字符。 prefixsuffix 的實際內容根本不重要,因為它們不會被打印出來 - 隻有它們的長度很重要。

指定格式化程序

將所有布爾值 True 轉換為 1 並將 False 轉換為 "-1"

mapping = {
 "bool": lambda x: "1" if x else "-1"
}
a = np.array([True, False, True])
np.arraystring(a, formatter=mapping)



[1 -1 1]

這裏,請確保您在映射中返回一個字符串,否則將引發錯誤。

指定閾值

默認情況下, threshold=1000 ,這意味著將匯總具有 1000 個或更多值的數組:

a = np.arange(1500)
np.arraystring(a)



[   0    1    2 ... 1497 1498 1499]

這意味著小數組不會被匯總:

a = np.arange(7)
np.arraystring(a)



[0 1 2 3 4 5 6]

我們可以設置一個閾值,這樣即使是這些小數組也會被匯總:

a = np.arange(7)
np.arraystring(a,threshold=3)



'[0 1 2 ... 4 5 6]'

指定邊項目

默認情況下, edgeitems=3 ,這意味著當匯總值時,左側將顯示 3 個值,右側將顯示 3 個值:

a = np.arange(1500)
np.arraystring(a)



'[   0    1    2 ... 1497 1498 1499]'

我們可以通過設置我們自己的 edgeitems 來自定義它:

a = np.arange(1500)
np.arraystring(a, edgeitems=4)



'[   0    1    2    3 ... 1496 1497 1498 1499]'

指定標誌

要顯示正數的 + 符號:

a = np.array([np.inf, 3.14, -2])
np.arraystring(a, sign="+")



'[ +inf +3.14 -2.  ]'

要在正數前麵添加" "

a = np.array([np.inf, 3.14, -2])
np.arraystring(a, sign=" ")



'[  inf  3.14 -2.  ]'

這裏很難看到,但添加了一個空格。

指定浮點數模式

固定的

要獲取具有相同小數位的浮點數(即默認為 8):

a = np.array([5.05, 5.05001])
np.arraystring(a, floatmode="fixed")



'[5.05000000 5.05001000]'
獨特

要獲取具有最少小數位數的浮點數,以便唯一標識這些值:

a = np.array([5.05, 5.05001])
np.arraystring(a, floatmode="unique")



'[5.05    5.05001]'

請注意,這會忽略 precision 參數。

最大預測值

與 unique 相同,但浮點數最多可以有 precision

a = np.array([5.05, 5.052999])
np.arraystring(a, floatmode="maxprec", precision=4)



'[5.05  5.053]'
maxprec_equal

maxprec 相同,但浮點數都具有相同的 precision

a = np.array([5.05, 5.05001])
np.arraystring(a, floatmode="maxprec_equal")



'[5.05000 5.05001]'

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 NumPy | array2string method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。