python - IPython - 打印默认值以在长变量上打印头和尾

标签 python numpy pandas ipython

(仅适用于在 IPython 中工作,无论是终端还是 QTConsole,而不是笔记本)有没有一种方法可以使常规打印语句(是的,2.7)自动打印变量的头部和尾部(甚至只是头部)如果它超过了某个任意大小?

如果我 print dataframe 在一个太大的 pandas dataframe 上,pandas 会自动打印头部。我希望它在列表和 numpy 数组上也能这样工作,这样下次我不小心打印出一个巨大的数组时,我就不会得到 100 页的数字。 (我确定我可以编写一个函数来执行此操作,但我反射性地使用打印,所以我想知道是否有一种方法可以控制 IPython 将显示多少 - 实际上,我宁愿更改控制台显示的内容而不是程序在做什么。)

最佳答案

你不能用 print 语句做很多事情,但你可以对 ipython 的输出做一些事情,考虑这些命令:

In [13]: x = range(3)

In [14]: x
Out[14]: [0, 1, 2]

In [15]: print x
[0, 1, 2]

首先,xOut[14] 赋给表达式的值,然后显示 Out[14]

您可以修改ipython 以不同方式显示它。据我所知,ipython 在内部使用 pprint 或其副本。不过,简单地猴子修补 pprint.pprint/pprint.pformat/pprint.PrettyPrinter 不起作用。您需要正确破解 ipython。

其次,print x 直达 Python 的核心。在 python 2.x 中,您无法更改 print 的功能。在 python 3.x 中,print() 只是一个函数,您可以对其进行猴子修补。

如果您打印的是您自己类的对象,请随意重新定义 __str____repr__ 就像 numpy 一样:

numpy.set_printoptions(threshold=2)
numpy.array(range(10)).__str__()
'[0 1 2 ..., 7 8 9]'
print numpy.array(range(10))
[0 1 2 ..., 7 8 9]

最后,ipython 自带了 %page 魔法命令,你可以发出 %page x 并且 x 的表示code> 足够大,您将转到 less 或类似的寻呼机,您可以在其中一次一页查看此文本表示。

附言ipython 可以通过“traits”进行扩展,对我来说它仍然很神奇,但也许你可以使用 traits 解决第一种情况。

关于python - IPython - 打印默认值以在长变量上打印头和尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868254/

相关文章:

python - 如何在级联列中添加第一个值?

python - 当索引为复合时,pandas 多列应用失败

python - Pandas :将数据框附加到另一个 df

python - Docker下PyAudio没有声音

python - 我的单选按钮在选择它们后保持选中状态并且无法取消选择它们 python tkinter

python - 从 python 脚本上传文件到我的 Dropbox

python pandas csv导出

python - 从字符串中提取科学数字

python - Numpy:将一维数组作为二维数组而不进行整形

python - 求解 numpy/matplotlib 中插值数据中的零