当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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