Python numpy.array2string函数方法的使用

numpy.array2string 函数用于将 NumPy 数组转换为字符串表示。它允许你自定义输出格式,包括精度、分隔符、行和列的宽度等。本文主要介绍一下NumPy中array2string方法的使用。

numpy.array2string

numpy.array2string(a, max_line_width=None, precision=None, suppress_small=None, separator=' ', prefix='', style<novalue>, formatter=None, threshold=None, edgeitems=None, sign=None, floatmode=None, suffix='', *, legacy=None) [source]

参数:

object :array_like

输入array

max_line_width :int, 可选

如果文本长于max_line_width,则插入换行符。

默认为numpy.get_printoptions()['linewidth']

precision :intNone, 可选

浮点精度。默认为numpy.get_printoptions()['precision']

suppress_smallbool, 可选

将“非常接近”的数字表示为零;默认值为False

非常接近由精度定义:如果精度为8

例如(绝对值)小于5e-9的数字表示为零。

默认为numpy.get_printoptions()['suppress']

separatorstr, 可选

插入元素之间。

fprefix str, 可选

suffixstr, 可选

前缀和后缀字符串的长度分别用于对齐和包装输出。

数组通常输出为:

prefix + array2string(a) + suffix

输出用前缀字符串的长度左填充,

并在列max_line_width-len(suffix)处强制换行。

应该注意的是,前缀和后缀字符串的内容不包含在输出中。

style _NoValue, 可选

没有效果,请不要使用。 

从1.14.0版开始不推荐使用。

formatter :可调用的dict, 可选

如果不是None,则键应指示相应的格式化功能适用的类型。

可调用对象应返回一个字符串。

未指定的类型(通过其对应的键)由默认格式化程序处理。

可以设置格式器的单个类型为:

  • ‘bool’
  • ‘int’
  • ‘timedelta’ : numpy.timedelta64
  • ‘datetime’ : numpy.datetime64
  • ‘float’
  • ‘longfloat’ : 128-bit floats
  • ‘complexfloat’
  • ‘longcomplexfloat’ : 由两个128-bit floats组成
  • ‘void’ : 类型 numpy.void
  • ‘numpystr’ : 类型numpy.string_和numpy.unicode_
  • ‘str’ : 所有其他字符串

其他键,可以用来设置一组类型一次是:

  • ‘all’ : 设置所有类型
  • ‘int_kind’ : 设置‘int’
  • ‘float_kind’ : 设置 'float'和'longfloat'
  • ‘complex_kind’ : 设置 'complexfloat'和'longcomplexfloat’
  • ‘str_kind’ : 设置 'str'和'numpystr’

threshold int, 可选

触发汇总而不是完整表示的数组元素总数。

默认为numpy.get_printoptions()['threshold']

edgeitems :int, 可选

每个维度的开始和结束处摘要中的数组项目数。

默认为numpy.get_printoptions()['edgeitems']

sign :字符串,可以是 '-' , '+',或'',可选

控制浮点类型符号的打印。如果是“+”

请始终打印正值的符号。如果为 ''

则始终在正值的正负号位置打印一个空格(空白字符)。

如果为“-”,请省略正值的符号字符。

默认为numpy.get_printoptions()['sign']

floatmode :str, 可选

控制浮点类型的precision选项的解释。 

默认为numpy.get_printoptions()['floatmode'] 。 

可以采用以下值:

       1) ‘fixed’:始终打印精确的小数位数,

       即使这将打印出比唯一指定该值所需的位数多或少的位数。

       2) 'unique':打印唯一表示每个值所需的最少的小数位数。 

       不同的元素可能具有不同数量的数字。 

   precision选项的值将被忽略。

       3) 'maxprec':打印精度最高的小数位数,

       但是如果一个元素可以用更少的位数唯一表示,

       则仅打印那么多位数。

       4) 'maxprec_equal':打印最精确的小数位数,

       但是如果数组中的每个元素,

       都可以用相同数量的更少的数字唯一地表示,

       那么对所有元素都使用相同数量的数字。

legacy :string 或 False, 可选

如果设置为字符串“1.13”,则启用1.13旧版打印模式。 

通过在浮点数的符号位置包含一个空格以及0d数组的不同行为,

这近似于numpy 1.13打印输出。 如果设置为False ,

则禁用旧模式。

 无法识别的字符串将被警告,并带有向前兼容性的警告。

1.14.0版中的新功能。


返回值:

array_str : str

数组的字符串表示形式。

Raises:

TypeError

如果formatter中的callable不返回字符串。

Notes

如果为特定类型指定了格式化程序,则该类型的precision关键字将被忽略。

这是一个非常灵活的功能; array_reprarray_str在内部使用array2string因此具有相同名称的关键字在所有三个函数中应相同地工作。

例子

1)基本使用

import numpy as np

# 创建一个 NumPy 数组
a = np.array([1.12345, 2.12345, 3.12345, 4.12345])
# 将数组转换为字符串,保留默认设置
string_representation = np.array2string(a)
print(string_representation)

2)设置小数精度

import numpy as np

# 创建一个 NumPy 数组
a = np.array([1.12345, 2.12345, 3.12345, 4.12345])
# 将数组转换为字符串,设置小数精度为2
string_representation = np.array2string(a, precision=2)
print(string_representation)

3)使用自定义分隔符

import numpy as np

# 创建一个 NumPy 数组
a = np.array([1.12345, 2.12345, 3.12345, 4.12345])
# 将数组转换为字符串,使用逗号分隔
string_representation = np.array2string(a, separator=', ')
print(string_representation)

4)抑制小数点后的微小数值

import numpy as np

# 创建一个 NumPy 数组
a = np.array([1e-10, 2e-10, 3e-10, 4e-10])
# 将数组转换为字符串,抑制小数点后的微小数值
string_representation = np.array2string(a, suppress_small=True)
print(string_representation)

5)自定义格式化函数

import numpy as np
# 创建一个 NumPy 数组import numpy as np
# 创建一个 NumPy 数组
a = np.array([1.12345, 2.12345, 3.12345, 4.12345])
# 定义自定义格式化函数
formatter = {
    'float_kind': lambda x: f"{x:0.1f}"
}
# 将数组转换为字符串,使用自定义格式化函数
string_representation = np.array2string(a, formatter=formatter)
print(string_representation)

6)使用示例

import numpy as np

# 示例 1:指定小数精度、分隔符并抑制小数点后的微小数值
x1 = np.array([1e-16, 1, 2, 3])
string_representation1 = np.array2string(x1, precision=2, separator=',', suppress_small=True)
print("示例 1 输出:", string_representation1)

# 示例 2:使用自定义格式化函数将浮点数格式化为两位小数
x2 = np.arange(3.)
string_representation2 = np.array2string(x2, formatter={'float_kind': lambda x: "%.2f" % x})
print("示例 2 输出:", string_representation2)

# 示例 3:使用自定义格式化函数将整数格式化为十六进制
x3 = np.arange(3)
string_representation3 = np.array2string(x3, formatter={'int': lambda x: hex(x)})
print("示例 3 输出:", string_representation3)

推荐阅读
cjavapy编程之路首页