Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 如何使set_printoptions(suppress=True)永久化?_Numpy_Customization_Ipython - Fatal编程技术网

Numpy 如何使set_printoptions(suppress=True)永久化?

Numpy 如何使set_printoptions(suppress=True)永久化?,numpy,customization,ipython,Numpy,Customization,Ipython,在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,

在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时都能执行此操作?

好的,简化此设置的一种方法是在$PYTHONPATH上的某处创建一个wee模块,
printopts
例如,包含:

import numpy
numpy.set_printoptions(suppress = True)
然后在需要更改打印时导入。您还可以从printopts import numpy以
的形式在代码中导入numpy。这样,您只需要一个导入语句

干杯

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

再考虑一下,我要做的是创建一个模块,比如说
np.py
包含

from numpy import *
set_printoptions(supress=True)
然后总是
import np
以获得修改后的版本,原因见我下面的评论


如果您不介意黑客攻击,只需将set_printoptions()调用添加到
numpy/\uuuu init\uuuu.py
文件中,但您必须具有对numpy安装的写访问权限,并记住在更新python或numpy时重复黑客攻击。我认为这不是一个好主意。

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

import_mod numpy
execute numpy.set_printoptions(suppress = True)
您还可以将其添加到自定义配置文件或使用其他配置方法:


我将其添加到
~/.ipython/ipy\u user\u conf.py中的
main()
函数中:

from numpy import set_printoptions
set_printoptions(suppress = True)
这似乎奏效了

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

c.InteractiveShellApp.exec_lines = [
        ...
        'import numpy as np',
        'np.set_printoptions(suppress=True)',
        ...
        ]

我认为iPythonc已被弃用,ipy_user_conf.py是首选?Dwf,将其作为单独的答案添加?我听说它已被弃用,但决定提出建议,因为:1)IPython的0.10文档(上次稳定)不提它已被弃用2)它似乎比ipy_user_conf.py稍微简单一点,请注意,一个级别,说“从版本0.11开始,IPython有一个全新的配置系统…”Arrrght这并不比在IPython-pylab会话中键入“set”并按向上箭头获取我上次键入的命令简单。我希望这一点始终保持不变。好吧,如果您总是像从printopts导入numpy一样从printopts导入
,那么导入numpy将起作用。但是好吧-你让我用-1来谷歌!!!请参见编辑以回答。事实上,我认为这比使用ipython更简单,而且比我在上面的
-ed段落中所说的要好。无论如何,我认为您在更改广泛使用的包的默认行为时应该小心:您使用的其他模块或脚本可能会采用默认行为,而不会给出预期的结果。在您自己的代码中,这不会发布给其他人,请继续,但要提醒您自己,您正在使用不同的导入语句执行一些非标准的操作。