插件窝 干货文章 Python 中如何进行矩阵的精确格式化输出

Python 中如何进行矩阵的精确格式化输出

格式化 输出 矩阵 matrix 298    来源:    2025-03-14

在 Python 中,如果你需要精确格式化输出矩阵,可以使用 numpy 库中的 array 对象,并结合 numpy 的格式化功能来实现。以下是一些常见的方法:

1. 使用 numpyset_printoptions 函数

numpy 提供了 set_printoptions 函数,可以全局设置数组的打印格式。你可以通过设置 precision 参数来控制小数点后的位数。

import numpy as np

# 创建一个矩阵
matrix = np.array([[1.23456789, 2.3456789], [3.456789, 4.56789]])

# 设置全局打印选项
np.set_printoptions(precision=4, suppress=True)

# 打印矩阵
print(matrix)

输出:

[[1.2346 2.3457]
 [3.4568 4.5679]]

2. 使用 numpyarray2string 函数

array2string 函数允许你对单个数组进行格式化输出,而不影响全局设置。

import numpy as np

# 创建一个矩阵
matrix = np.array([[1.23456789, 2.3456789], [3.456789, 4.56789]])

# 使用 array2string 进行格式化输出
formatted_matrix = np.array2string(matrix, precision=4, suppress_small=True)

print(formatted_matrix)

输出:

[[1.2346 2.3457]
 [3.4568 4.5679]]

3. 使用 numpysavetxt 函数

如果你需要将矩阵输出到文件或控制台,并且希望精确控制格式,可以使用 savetxt 函数。

import numpy as np

# 创建一个矩阵
matrix = np.array([[1.23456789, 2.3456789], [3.456789, 4.56789]])

# 使用 savetxt 进行格式化输出
np.savetxt(sys.stdout, matrix, fmt='%.4f', delimiter='\t')

输出:

1.2346  2.3457
3.4568  4.5679

4. 使用 pandasDataFrame

如果你需要更复杂的格式化输出,可以使用 pandasDataFrame,它提供了更灵活的格式化选项。

import numpy as np
import pandas as pd

# 创建一个矩阵
matrix = np.array([[1.23456789, 2.3456789], [3.456789, 4.56789]])

# 转换为 DataFrame
df = pd.DataFrame(matrix)

# 设置显示选项
pd.set_option('display.float_format', '{:.4f}'.format)

# 打印 DataFrame
print(df)

输出:

       0      1
0  1.2346  2.3457
1  3.4568  4.5679

5. 自定义格式化函数

如果你需要完全自定义输出格式,可以编写一个自定义函数来格式化矩阵。

import numpy as np

# 创建一个矩阵
matrix = np.array([[1.23456789, 2.3456789], [3.456789, 4.56789]])

# 自定义格式化函数
def format_matrix(matrix, precision=4):
    for row in matrix:
        print(" ".join(f"{x:.{precision}f}" for x in row))

# 调用自定义格式化函数
format_matrix(matrix, precision=4)

输出:

1.2346 2.3457
3.4568 4.5679

总结

  • 使用 numpyset_printoptions 可以全局设置打印格式。
  • 使用 array2string 可以对单个数组进行格式化输出。
  • 使用 savetxt 可以将矩阵输出到文件或控制台。
  • 使用 pandasDataFrame 可以进行更复杂的格式化。
  • 自定义格式化函数可以完全控制输出格式。

根据你的需求选择合适的方法来实现矩阵的精确格式化输出。