即使被压制,jupyter笔记本也可以打印输出

时间:2017-09-12 18:50:22

标签: matplotlib ipython

为什么要从直方图中打印垃圾箱? 分号不应该压制吗?

在[1]中

import numpy as np
import matplotlib.pyplot as plt
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all";

在[2]中

%matplotlib inline
data ={'first':np.random.rand(100), 
       'second':np.random.rand(100)}
fig, axes = plt.subplots(2)
for idx, k in enumerate(data):
    axes[idx].hist(data[k], bins=20);

enter image description here

2 个答案:

答案 0 :(得分:1)

您已设置InteractiveShell.ast_node_interactivity = "all";,因此您已将所有节点设置为启用了交互功能。因此,您获得data = {..}

的值

并且;仅适用于最后顶级表达式,axes[idx].hist(data[k], bins=20);不是顶级表达式,因为它嵌套在for中,最后一个顶级节点是for,这是一个语句。

只需添加最后一个no-op语句,并以;

结束
%matplotlib inline
data ={'first':np.random.rand(100), 
       'second':np.random.rand(100)};
fig, axes = plt.subplots(2);
for idx, k in enumerate(data):
    axes[idx].hist(data[k], bins=20)
pass; # or None; 0; "foo"; ... 

你没有任何产出。

使用codetransformer %%ast魔法快速查看表达式的精确度。

答案 1 :(得分:-1)

如果您阅读文档,您将看到它返回的确切内容 - 下面描述的三项元组。您可以通过放置一个?在笔记本中显示它?在调用直方图结束时。看起来您InteractiveShell正在显示它。通常,是的,分号会抑制输出,虽然在循环内部它是不必要的。

  

返回

     

n :数组或数组列表       直方图箱的值。请参阅标注权重       有关可能的语义的描述。如果输入 x 是       数组,那么这是一个长度 nbins 的数组。如果输入是       序列数组[data1, data2,..],然后这是一个列表       具有每个数组的直方图值的数组       以相同的顺序。

     

bins :数组       箱子的边缘。长度nbins + 1(nbins左边和右边       最后一个垃圾箱的边缘)。即使是多个数据,也始终是单个阵列       集合被传入。

     

补丁:列表或列表列表       用于创建直方图的单个补丁的静默列表       或多个输入数据集的列表。