是否可以通过Markdown单元格中的超链接将一个IPython笔记本链接到另一个?如果我试试
Link to [Notebook 2](files/notebook2.ipynb)
Run Code Online (Sandbox Code Playgroud)
要么
Link to <a href="files/notebook2.ipynb">Notebook 2</a>
Run Code Online (Sandbox Code Playgroud)
将打开一个新选项卡,其中包含ipynb文件的原始未格式化内容.有没有办法让IPython通过超链接打开另一个笔记本用于新标签?
在python中有什么方法可以使用元组作为切片的索引吗?以下内容无效:
>>> a = range(20)
>>> b = (5, 12) # my slice indices
>>> a[b] # not valid
>>> a[slice(b)] # not valid
>>> a[b[0]:b[1]] # is an awkward syntax
[5, 6, 7, 8, 9, 10, 11]
>>> b1, b2 = b
>>> a[b1:b2] # looks a bit cleaner
[5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)
这似乎是一个合理的pythonic语法,所以我很惊讶,我不能这样做.
(更新)解决方案原来是:
>>> a[slice(*b)]
[5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud) 在我的Windows 7计算机上加载Python比在VM上运行的Ubuntu 14.04(在同一硬件上的Windows内部)上加载时间长17倍.Anaconda3发行版用于Windows和Ubuntu默认python3.4.
从Bash提示符(Windows上的Git bash):
$ time python3 -c "pass"
Run Code Online (Sandbox Code Playgroud)
在Windows上返回0.614s,在Linux上返回0.036s
加载包时情况会变得更糟:
$ time python3 -c "import matplotlib"
Run Code Online (Sandbox Code Playgroud)
在Windows上返回6.01s,在Linux上返回0.189s
Spyder在Windows上加载了51秒,在Linux上加载了1.5秒.
我没有运气确定为什么会出现这种性能问题.有没有人有任何想法我接下来应该尝试什么?
编辑:
为什么python在Windows上这么慢?有人建议将其作为一个可能的重复,但我的性能差异要大得多,而且不能简单地通过不同的库依赖关系和编译器来解释.在我看来,这与文件系统差异有关.
我怀疑是防病毒的访问时扫描,但为了以防万一,禁用了防病毒软件.
>>> sys.path
['', 'c:\\Anaconda3\\python34.zip', 'c:\\Anaconda3\\DLLs', 'c:\\Anaconda3\\lib', 'c:\\Anaconda3', 'c:\\Anaconda3\\lib\\site-packages', 'c:\\Anaconda3\\lib\\site-packages\\Sphinx-1.2.3-py3.4.egg', 'c:\\Anaconda3\\lib\\site-packages\\cryptography-0.8-py3.4-win-amd64.egg', 'c:\\Anaconda3\\lib\\site-packages\\nose-1.3.4-py3.4.egg', 'c:\\Anaconda3\\lib\\site-packages\\win32', 'c:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'c:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'c:\\Anaconda3\\lib\\site-packages\\setuptools-14.3-py3.4.egg']
Run Code Online (Sandbox Code Playgroud)
更新:
在同一台PC上全新安装Windows 8.1 Pro解决了这个问题.重新安装所有应用程序后,Anaconda3的Python性能是我见过的最好的.不幸的是,这个问题的根本原因仍然未知.
更正:
在我的IT部门安装了Sophos SafeGuard加密软件和MS Endpoint Protection之后,问题就出现了.和以前一样慢启动.禁用额外的软件并没有解决问题所以我们正在尝试在其他机器上进行测试来追踪问题.
bash命令是否rm *~
只删除以代字号结尾的文件,或者是否存在更高级的bash或gnu make模式?谷歌似乎无法搜索这两个符号组合.我在Makefile clean:target中找到了这个.
gnu会不会只使用隐式规则创建带尾随的文件?
有没有一种简单的方法来增加matplotlib颜色循环而不需要挖掘轴内部?
交互式绘制我使用的常见模式时:
import matplotlib.pyplot as plt
plt.figure()
plt.plot(x,y1)
plt.twinx()
plt.plot(x,y2)
Run Code Online (Sandbox Code Playgroud)
将plt.twinx()
在必要时得到不同的Y尺度为Y1和Y2,但两条曲线均在默认colorcycle第一颜色使它必须手动声明为每个情节的颜色绘制.
必须有一种速记方式来指示第二个绘图增加颜色循环而不是明确地给出颜色.当然很容易设置color='b'
或color='r'
用于两个图,但是当使用自定义样式时,ggplot
您需要从当前颜色循环中查找颜色代码,这对于交互式使用来说是麻烦的.
有没有办法导致以编程方式生成的URL在IPython笔记本单元格的新浏览器选项卡或窗口中打开?
在执行笔记本单元时,结果应该是打开指向生成的链接的新选项卡或窗口.
注意:当我只返回带有超链接的IPython.core.display.HTML实例时,链接被破坏.如果将URL复制并粘贴到浏览器窗口中,则该URL有效.
我正在寻找一种使用外部TTL脉冲触发数据采集软件的简单方法.我需要与5 Hz参考时钟同步采样来自多个源的数据.此次采集不需要实时优先级,但我希望确保尽快触发我的软件,并确保每个外部时钟周期恰好触发一次.我宁愿通过某种方式从外部触发器获取中断而不需要使用快速轮询循环.据我所知,在Linux等现代操作系统中,不能只使用并行端口引脚作为中断.有任何想法吗?
我还在考虑在我的网络上生成广播数据包,以通知网络上的其他机器发生了触发事件.然而,由于网络延迟,在触发之间的200ms周期内可能没有足够的时间来进行采集.
IPython 中是否有一种方法可以将import
笔记本单元的内容视为一个单独的模块?或者让单元格的内容拥有自己的命名空间。
给定一个带有类Foo的模块,该模块具有调用bar
模块范围中定义的函数的方法,是否有办法在bar
不修改模块的情况下替换不同的函数?
class Foo(object):
def run(self):
bar()
def bar():
return True
Run Code Online (Sandbox Code Playgroud)
那么我的一个实例Foo
为,我想替代的功能baz()
为bar()
,而无需修改Foo
类.
我想在一个pandas DataFrame中用一个引用列的格式化字符串表示一行.我找到的最好的方法是将行转换为dict然后string.format()
假设有一个pd.DataFrame
df
列'标本'和'日期':
r = df.loc[0]
print("{specimen}_{date}".format(**r.to_dict()))
Run Code Online (Sandbox Code Playgroud)
可用于使用列数据应用格式字符串.
这看起来效率不高.是否必须有更好的方法在pandas中直接执行此操作而不转换为dict,同时保持格式化字符串中显式命名列的灵活性?
更新:
最终目的是为matplotlib图生成刻度标签.使用以下答案:
plot.set_yticklabels(["{specimen}_{date}".format(**r) for i,r in df.iterrows()])
Run Code Online (Sandbox Code Playgroud) 在读取大型C程序或库时,跨多个源文件和目录遍历嵌套函数的好方法是什么?
通常,在一个C源文件中声明的函数将简单地重定向到另一个C文件中声明的另一个函数,该文件实际上可能再次重定向.
目前,我只是为链中的下一个函数找到它的声明,但必须有一个更有效的方法.
注意:我明确没有询问如何在运行时或调试器中跟踪程序流.我只是要求阅读来源.
给定一个numpy
数组:
a = arange(10,20,1)
Run Code Online (Sandbox Code Playgroud)
我经常需要一个包含数组的第一个和最后一个元素的元组:
w = a[0],a[-1]
Run Code Online (Sandbox Code Playgroud)
是否有一个方便的python切片快捷方式在单个引用中执行此操作a
?