在进行布尔数组比较时,使用&代替*或|替代是否有任何优势/惯例+?这些总是相同吗?
(如果这些是在文档中,链接可能是一个可接受的答案,但我天真地搜索'numpy&符'和'numpy elementwise布尔比较'没有产生任何相关的东西)
我想在matplotlib中创建一个椭圆,其填充颜色具有取决于半径的alpha(不透明度)值;
例如,2D高斯.
有没有办法做到这一点?
可以很容易地创建具有颜色渐变的矩形图(如Gradient facecolor matplotlib条形图和此)但我无法弄清楚如何对圆/椭圆进行相同的操作.
我有两个包安装具有相同名称的不同包.它们都是"包",因为它们具有在命令setup.py中指定的顶级文件.package=['foo']setup
如果我安装使用distutils.core,最后安装将覆盖前一个(但我认为不会覆盖除非.py文件都具有相同的名称?).如果我安装使用setuptools,两个包安装到不同的鸡蛋.
一种选择是sys.path在导入包名之前明确设置; 这似乎是"非pythonic"而且很脏.
假设我在eggssetuptools中安装了这两个名称相同的软件包,我该如何指定导入的软件包?
是否有可能在matplotlib中重新打开一个封闭的数字(即用户X'd)?以下代码显示了天真的方法:
In [14]: fig = figure(10)
In [15]: close(fig)
In [16]: fig.show()
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1410, in __call__
return self.func(*args)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 495, in callit
func(*args)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_tkagg.py", line 253, in idle_draw
self.draw()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_tkagg.py", line 239, in draw
tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/tkagg.py", line 19, in blit
tk.call("PyAggImagePhoto", photoimage, id(aggimage), colormode, id(bbox_array))
TclError: this isn't a Tk application
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个带有小部件的图形,因此可以使用一种解决方法(只需创建一个新图形),但我想知道该figure实例在关闭后是否完全没用.
我有一个奇怪的错误,现在在2台机器上重复.它可能仅限于python 2.7 64位,但目前尚不清楚.在Mac OS X 10.7上,我得到:分段错误:11和10.6每当我关闭python时,我得到一个简单的"分段错误".
但是,错误很难再现.简单的python脚本如:python -c"import sys; print sys.maxint"打开和关闭没有问题.
我怀疑matplotlib存在问题,但类似地python -c"import pylab; pylab.plot(); pylab.show()"也没有任何问题.
但是,有许多不同的软件包会在python关闭时导致分段错误,但在交互式会话期间不会导致分段错误,直到脚本完成为止.因此,错误不会影响我的任何代码 - 但是当在10.7中运行任何内容时,它会造成混乱,因为会弹出焦点窃取错误消息.
我会努力列出并记录导致崩溃的脚本/模块,但我想我现在就提出问题,看看是否有其他人遇到过类似的问题.
这是一个示例引用(感谢Ned的建议).
Process: python2.7 [42731]
Path: /usr/local/bin/python
Identifier: python2.7
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: bash [1838]
Date/Time: 2011-09-16 20:38:52.847 -0600
OS Version: Mac OS X 10.7.1 (11B2118)
Report Version: 9
Interval Since Last Report: 11388 sec
Crashes Since Last Report: 12
Per-App Crashes Since Last Report: 11
Anonymous UUID: CE462F4B-5DAF-482A-8901-28ADB7AB0AD6
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception …Run Code Online (Sandbox Code Playgroud) 我最近从ipython0.10切换到ipython0.11.在ipython0.11中,我只看到python调试器参与(即使用%pdb)时的完整回溯的一小段,而在ipython0.10中我会看到完整的回溯.据我所知,pdb命令行无法直接访问完整的回溯 - 您可以使用'u'浏览它,但无法直接看到它.
那么,有没有办法显示完整的追溯?比如配置参数?
或者,更有用的是,有没有办法让ipython只显示被捕获的异常,而不是显示它被捕获的代码中的位置?
编辑:示例:
In [1]: pdb
Automatic pdb calling has been turned ON
In [2]: 1/0
> <ipython-input-2-05c9758a9c21>(1)<module>()
-1 1/0
ipdb> q
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/Users/adam/<ipython-input-2-05c9758a9c21> in <module>()
----> 1 1/0
ZeroDivisionError: integer division or modulo by zero
Run Code Online (Sandbox Code Playgroud)
我想在 q退出pdb 之前看到ZeroDivisionError .
有没有什么好的方法可以反转(不是反转,这很简单,请参阅Invert colormap in matplotlib)matplotlib 中的颜色图?
即,我想获取一个 png 图像,它具有以下形式的颜色元组(1,1,0,1),并使用 matplotlib 颜色图来获取整数或浮点数。
我想我可以拼凑一些东西来做到这一点,但我不能是第一个想要这个功能的人——它是否存在于我找不到的地方,或者它内置于 matplotlib 中?
Matplotlib的make_axes_locatable工具允许您将新轴添加到现有轴的一侧.但是,它会调整父轴的大小.有办法避免这种情况吗?
下面是一个完整的示例,显示了问题以及如何重现它:
import matplotlib.pyplot as pl
from mpl_toolkits.axes_grid import make_axes_locatable
import matplotlib.axes as maxes
fig = pl.figure()
ax1=pl.subplot(1,3,1)
ax1.imshow([[0,1],[2,0]])
ax1.yaxis.set_visible(False)
ax1.xaxis.set_visible(False)
ax2=pl.subplot(1,3,2)
ax2.imshow([[0,1],[2,0]])
ax2.yaxis.set_visible(False)
ax2.xaxis.set_visible(False)
ax3=pl.subplot(1,3,3)
ax3.imshow([[0,1],[2,0]])
ax3.yaxis.set_visible(False)
ax3.xaxis.set_visible(False)
pl.subplots_adjust(wspace=0)
divider = make_axes_locatable(ax1)
cax1 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
pl.colorbar(ax1.images[0],cax=cax1)
cax1.yaxis.set_label_position('left')
cax1.yaxis.set_ticks_position('left')
fig.add_axes(cax1)
divider = make_axes_locatable(ax2)
cax2 = divider.new_vertical(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
fig.add_axes(cax2)
pl.colorbar(ax2.images[0],cax=cax2,orientation='horizontal')
# thin out the tick labels for visibility
for t in cax2.xaxis.get_majorticklabels()[::2]:
t.set_visible(False)
divider = make_axes_locatable(ax3)
cax3 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=False, axes_class=maxes.Axes)
pl.colorbar(ax3.images[0],cax=cax3)
fig.add_axes(cax3) …Run Code Online (Sandbox Code Playgroud) 在 matplotlib 中,是否有任何(特别聪明的)方法来保存具有多个扩展名的图形?
用例:我通常需要 .png 文件用于快速查看、上传到网络等。但对于出版质量的数字,我需要 .pdf 或 .eps 文件。通常,我想要全部 3 个。
不难做到:
for suffix in 'png eps pdf'.split():
pl.savefig(figname+"."+suffix)
Run Code Online (Sandbox Code Playgroud)
但它确实涉及大量重写代码(因为我现在通常只是savefig(figname+'.png')到处都有),这对于方便的包装函数来说似乎是一个简单的例子。
与以下内容密切相关:如何以编程方式更改python装饰器中函数的argspec?
装饰器模块提供了制作装饰器功能的方法,该功能保留了修饰函数的argspec.
如果我定义一个不用作装饰器的函数,有没有办法复制另一个函数的argspec?
用例示例:
class Blah(object):
def foo(self, *args, **kwargs):
""" a docstr """
result = bar(*args, **kwargs)
result = result**2 # just so it's clear we're doing something extra here...
return result
def bar(x, y, z=1, q=2):
""" a more useful docstr, saying what x,y,z,q do """
return x+y*z+q
Run Code Online (Sandbox Code Playgroud)
我希望fooargspec看起来像bar,但保持不变的来源(即inspect.getsource(foo)仍会显示result垃圾).这样做的主要目的是获取sphinx docs和ipython的交互式帮助以显示适当的参数.
正如另一个问题的答案所说,装饰包显示了一种方法,但我迷失了代码的内容.似乎decorator包正在重新编译源代码,或类似的东西.我原本希望有一种更简单的方法,例如类似的方法foo.argspec = bar.argspec.