4

在 numpy 中有一个函数可以使数组打印得更漂亮。

set_printoptions(suppress = True)

换句话说,而不是这样:

array([[  0.00000000e+00,  -3.55271368e-16,   0.00000000e+00,
          1.74443793e-16,   9.68149172e-17],
       [  5.08273978e-17,  -4.42527959e-16,   1.57859836e-17,
          1.35982590e-16,   5.59918137e-17],
       [  3.00000000e+00,   6.00000000e+00,   9.00000000e+00,
          2.73835608e-16,   7.37061982e-17],
       [  2.00000000e+00,   4.00000000e+00,   6.00000000e+00,
          4.50218574e-16,   2.87467529e-16],
       [  1.00000000e+00,   2.00000000e+00,   3.00000000e+00,
          2.75582605e-16,   1.88929494e-16]])

你得到这个:

array([[ 0., -0.,  0.,  0.,  0.],
       [ 0., -0.,  0.,  0.,  0.],
       [ 3.,  6.,  9.,  0.,  0.],
       [ 2.,  4.,  6.,  0.,  0.],
       [ 1.,  2.,  3.,  0.,  0.]])

如何使此设置永久化,以便在我使用 IPython 时执行此操作?

4

3 回答 3

2

我将此添加到main()函数中~/.ipython/ipy_user_conf.py

from numpy import set_printoptions
set_printoptions(suppress = True)

它似乎工作。

在以后的 IPython 版本中,运行ipython profile create,然后打开~\.ipython\profile_default\ipython_config.py并编辑以下行以添加命令:

c.InteractiveShellApp.exec_lines = [
        ...
        'import numpy as np',
        'np.set_printoptions(suppress=True)',
        ...
        ]
于 2009-12-07T05:31:04.497 回答
1

您可以将它们添加到您的ipythonrc文件中(位于~/.ipythonUnix 上)。你需要这些行:

import_mod numpy
execute numpy.set_printoptions(suppress = True)

您还可以将其添加到自定义配置文件或使用其他配置方法:

http://ipython.scipy.org/doc/stable/html/config/customization.html

于 2009-11-25T15:15:39.687 回答
0

好吧,简化它的一种方法是在 $PYTHONPATH 的某处创建一个小模块,printopts例如,包含:

import numpy
numpy.set_printoptions(suppress = True)

然后在您想更改打印时导入。您也可以将代码中的 numpy 导入为from printopts import numpy. 这样你只需要一个导入语句。

干杯。

附录:仅用于交互使用的解决方案是将 $PYTHONSTARTUP 环境变量设置为 printopts.py 文件的路径。在交互模式下,解释器先执行该文件。当然,python总是会加载 numpy,从而影响启动时间。

考虑多一点后,我要做的是创建一个模块,比如np.py包含

from numpy import *
set_printoptions(supress=True)

然后总是import np得到你的修改版本,原因在我下面的评论中。

如果您不介意 hack,只需将 set_printoptions() 调用添加到the numpy/__init__.py文件,但您必须对 numpy 安装具有写入权限,并记住在更新 python 或 numpy 时重复 hack。我不认为这是一个好主意。

于 2009-11-25T11:57:54.837 回答