Ipython 笔记本:提取方法的优雅方式?
Ipython Notebook: Elegant way of extracting method out?
随着我的笔记本越来越长,我想提取一些代码,这样笔记本会更容易阅读。
例如,这是我要从笔记本
中提取的cell/function
def R_square_of(MSE, kde_result):
# R square measure:
# https://en.wikipedia.org/wiki/Coefficient_of_determination
y_mean = np.mean(kde_result)
SS_tot = np.power(kde_result - y_mean,2)
SS_tot_avg = np.average(SS_tot)
SS_res_avg = MSE
R_square = 1 - SS_res_avg/SS_tot_avg
return R_square
我怎样才能有效地做到这一点?
我的想法:
- 很容易创建一个
my_helper.py
并将代码放在上面,然后 from my_helper import *
- 问题是,我可能会在方法中使用其他包(在这种情况下,
np
,即numpy
),那么我需要重新导入 my_helper.py
中的 numpy。它可以重新使用在 ipython notebook
中创建的环境,因此不需要重新导入吗?
- 如果我更改
my_helper.py
中的代码,我需要 重新启动内核 以加载更改 (NameError: global name 'numpy' is not defined),这使得它很难更改该文件中的代码。
您可以 运行 使用 %run magic command:
代替导入您的其他文件
In [1]: %run -i my_helper.py
-i
: run the file in IPython’s namespace instead of an empty one. This is useful if you are experimenting with code written in a text editor which depends on variables defined interactively.
我仍然会借此机会推荐将文件编写为适当的 python 模块并导入它。通过这种方式,您实际上开发了一个可在笔记本环境之外使用的代码库。您可以为其编写测试或将其发布到某处。
随着我的笔记本越来越长,我想提取一些代码,这样笔记本会更容易阅读。
例如,这是我要从笔记本
中提取的cell/function
def R_square_of(MSE, kde_result):
# R square measure:
# https://en.wikipedia.org/wiki/Coefficient_of_determination
y_mean = np.mean(kde_result)
SS_tot = np.power(kde_result - y_mean,2)
SS_tot_avg = np.average(SS_tot)
SS_res_avg = MSE
R_square = 1 - SS_res_avg/SS_tot_avg
return R_square
我怎样才能有效地做到这一点?
我的想法:
- 很容易创建一个
my_helper.py
并将代码放在上面,然后from my_helper import *
- 问题是,我可能会在方法中使用其他包(在这种情况下,
np
,即numpy
),那么我需要重新导入my_helper.py
中的 numpy。它可以重新使用在ipython notebook
中创建的环境,因此不需要重新导入吗? - 如果我更改
my_helper.py
中的代码,我需要 重新启动内核 以加载更改 (NameError: global name 'numpy' is not defined),这使得它很难更改该文件中的代码。
您可以 运行 使用 %run magic command:
代替导入您的其他文件In [1]: %run -i my_helper.py
-i
: run the file in IPython’s namespace instead of an empty one. This is useful if you are experimenting with code written in a text editor which depends on variables defined interactively.
我仍然会借此机会推荐将文件编写为适当的 python 模块并导入它。通过这种方式,您实际上开发了一个可在笔记本环境之外使用的代码库。您可以为其编写测试或将其发布到某处。