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
| int
或 None
| 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
參數prefix
和suffix
用於向每行添加填充。每行最多隻能容納 max_line_width-len(prefix)-len(suffix)
個字符。請注意,prefix
和 suffix
的長度很重要,而不是它們的實際值,因為它們不會打印出來。
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" |
始終顯示指定的 |
"unique" |
顯示最小小數位數,以便唯一標識值。這會忽略指定的 |
"maxprec" |
最多打印指定的 |
"maxprec_equal" |
最多打印指定的 |
默認情況下,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]'
指定前綴和後綴
prefix
和 suffix
的長度用於向每行添加填充:
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
字符。 prefix
和 suffix
的實際內容根本不重要,因為它們不會被打印出來 - 隻有它們的長度很重要。
指定格式化程序
將所有布爾值 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]'
相關用法
- Python NumPy array_equal方法用法及代碼示例
- Python NumPy array_equiv方法用法及代碼示例
- Python NumPy array_split方法用法及代碼示例
- Python NumPy array方法用法及代碼示例
- Python arcgis.gis._impl._profile.ProfileManager.save_as用法及代碼示例
- Python arcgis.raster.functions.ccdc_analysis用法及代碼示例
- Python arcgis.geometry.functions.trim_extend用法及代碼示例
- Python arcgis.raster.analytics.sample用法及代碼示例
- Python arcgis.features.analysis.derive_new_locations用法及代碼示例
- Python arcgis.features.analyze_patterns.calculate_density用法及代碼示例
- Python arcgis.geometry.Geometry.label_point用法及代碼示例
- Python arcgis.plan_routes用法及代碼示例
- Python arcgis.mapping.forms.FormInfo用法及代碼示例
- Python arcgis.gis.UserManager.get用法及代碼示例
- Python arcgis.raster.ImageryLayerCacheManager.update_tiles用法及代碼示例
- Python arcgis.geometry.Geometry.true_centroid用法及代碼示例
- Python arcgis.gis.User.generate_direct_access_url用法及代碼示例
- Python arcgis.gis.GroupMigrationManager.create用法及代碼示例
- Python arcgis.geometry.Geometry.hull_rectangle用法及代碼示例
- Python arcgis.features.analysis.summarize_within用法及代碼示例
- Python arcgis.geometry.filters.intersects用法及代碼示例
- Python arcgis.geometry.functions.project用法及代碼示例
- Python arcgis.raster.functions.percentile用法及代碼示例
- Python arcgis.raster.ImageryLayer.save用法及代碼示例
- Python arcgis.geoanalytics.summarize_data.reconstruct_tracks用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 NumPy | array2string method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。