【问题标题】:Matrix-like printing of 2D arrays in PythonPython中二维数组的矩阵式打印
【发布时间】:2025-07-08 16:30:02
【问题描述】:

假设我在 Python 的 numpy 数组中有一个矩阵

In [3]: my_matrix
Out[3]: 
array([[ 2.,  2.,  2.,  2.,  2.,  2.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  2.,  2.,  2.,  2.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  2.,  2.,  2.,
         2.,  2.,  2.,  2.,  2.]])

有没有办法让 Python/IPython 将我的数组打印为:

[ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2; 
  0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0; 
  0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 ]

? (~类似于MATLAB的做法)

另外,我注意到 IPython 在打印 numpy 数组时确实使用我的终端的整个宽度。其他功能(例如pprint.pprint)。我该如何改变呢?

【问题讨论】:

    标签: python arrays printing numpy 2d


    【解决方案1】:

    使用numpy.set_printoptions。增加线宽:

    np.set_printoptions(linewidth=150)
    

    用你需要的任何东西替换 150。现在,按照你的要求打印(我猜这意味着没有小数点):

    print my_matrix.astype('i')
    

    如果您有浮点值,您还可以使用选项precision 控制打印输出的精度:

    np.set_printoptions(precision=3)
    

    【讨论】: