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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。