我注意到你绘制的第一行是蓝色,然后是绿色,然后是红色,依此类推.
有没有办法访问这个颜色列表?我已经看过一百万篇关于如何更改颜色循环或访问迭代器的帖子,而不是如何获取matplotlib默认循环的颜色列表.
多年来,我一直在努力在matplotlib中获得高效的实时绘图,直到今天我仍然不满意.
我想要一个redraw_figure
更新图形"实时"(如代码运行)的函数,并且如果我在断点处停止,将显示最新的图.
这是一些演示代码:
import time
from matplotlib import pyplot as plt
import numpy as np
def live_update_demo():
plt.subplot(2, 1, 1)
h1 = plt.imshow(np.random.randn(30, 30))
redraw_figure()
plt.subplot(2, 1, 2)
h2, = plt.plot(np.random.randn(50))
redraw_figure()
t_start = time.time()
for i in xrange(1000):
h1.set_data(np.random.randn(30, 30))
redraw_figure()
h2.set_ydata(np.random.randn(50))
redraw_figure()
print 'Mean Frame Rate: %.3gFPS' % ((i+1) / (time.time() - t_start))
def redraw_figure():
plt.draw()
plt.pause(0.00001)
live_update_demo()
Run Code Online (Sandbox Code Playgroud)
在运行代码时,绘图应该更新,并且我们应该在之后的任何断点处停止时看到最新数据redraw_figure()
.问题是如何最好地实施redraw_figure()
在上面的实现(plt.draw(); plt.pause(0.00001)
)中,它可以工作,但速度非常慢(~3.7FPS)
我可以实现它:
def redraw_figure():
plt.gcf().canvas.flush_events()
plt.show(block=False)
Run Code Online (Sandbox Code Playgroud)
并且它运行得更快(~11FPS),但是当您在断点处停止时,情节不是最新的(例如,如果我在线上放置断点t_start = ...
,则不会出现第二个图). …
我在3D空间中有一组点,我需要从中找到Pareto前沿.执行速度在这里非常重要,并且当我添加测试点时,时间会非常快.
点集看起来像这样:
[[0.3296170319979843, 0.0, 0.44472108843537406], [0.3296170319979843,0.0, 0.44472108843537406], [0.32920760896951373, 0.0, 0.4440408163265306], [0.32920760896951373, 0.0, 0.4440408163265306], [0.33815192743764166, 0.0, 0.44356462585034007]]
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用这个算法:
def dominates(row, candidateRow):
return sum([row[x] >= candidateRow[x] for x in range(len(row))]) == len(row)
def simple_cull(inputPoints, dominates):
paretoPoints = set()
candidateRowNr = 0
dominatedPoints = set()
while True:
candidateRow = inputPoints[candidateRowNr]
inputPoints.remove(candidateRow)
rowNr = 0
nonDominated = True
while len(inputPoints) != 0 and rowNr < len(inputPoints):
row = inputPoints[rowNr]
if dominates(candidateRow, row):
# If it is worse on all features remove the row from …
Run Code Online (Sandbox Code Playgroud) 同志们,
我想用 Python 从笔记本电脑的相机中捕捉图像。目前所有迹象都指向 OpenCV。问题是 OpenCV 是安装的噩梦,每次在新系统上重新安装代码时,它都会再次发生。
有没有更轻量级的方式在 Python 中捕获相机数据?我正在寻找具有以下效果的东西:
$ pip install something
$ python
>>> import something
>>> im = something.get_camera_image()
Run Code Online (Sandbox Code Playgroud)
我在 Mac 上,但欢迎任何平台上的解决方案。
我正在运行在服务器上的IPython笔记本中进行长时间运行的实验,其中典型的工作周期是:启动实验,去吃午餐,回来,检查进度,检查Facebook,检查电子邮件,再次检查Facebook,关闭计算机,回来,检查Facebook,检查进度,...
问题是当我关闭运行笔记本的浏览器窗口时,打印/日志记录输出不再保存在笔记本中.
例如,在我的简单实验中:
import time
start_time = time.time()
for i in xrange(5):
print '%s seconds have passed' % (time.time()-start_time)
time.sleep(2)
print 'Done!'
Run Code Online (Sandbox Code Playgroud)
如果我跑,关闭标签,10秒钟后回来,我只看到笔记本上次保存时的输出.我期望看到的是:
0.000111818313599 seconds have passed
2.00515794754 seconds have passed
4.01105999947 seconds have passed
6.0162498951 seconds have passed
8.01735782623 seconds have passed
Done!
Run Code Online (Sandbox Code Playgroud)
据推测,这将在未来的某个时间点得到修复,但同时在关闭浏览器之后还有一些容易入侵使其继续打印到笔记本输出?奖励点,如果它适用于内嵌图像.
如果我有一个以"test_"开头的文件,PyCharm会尝试使用PyTest运行它.我想正常运行它(作为常规Python脚本).我怎样才能做到这一点?
使用解决方案进行编辑:正如A. Romeau所指出的,有很多方法可以做到这一点:
对于要正常运行的给定测试文件:
在pytest中编辑你的setup.cfg文件(有一些我现在不知道的选项),这样它就不会"发现"你的测试(我没试过这个).
两种解决方案都不好.1是不方便的,因为你需要对你想要运行的每个文件进行大的多次点击和处理.2是不方便的,因为它干扰你正常运行pytest,从控制台.
JetBrains:请为了上帝的爱,只需添加一个禁用自动单元测试的选项.这非常烦人,因为pytest/UnitTest的输出在尝试追踪测试中的错误时没有常规解释器的输出那么有用(没有链接到故障线路,不能单独运行给定功能等) .
PyCharm"问题"已在此处开启.
当我运行PyTest时,我得到一些测试失败
....
!!! Recursion detected (same locals & position)
Run Code Online (Sandbox Code Playgroud)
但是,当我手动运行测试时,我发现没有无限递归.我的代码做了一些奇怪的事情,可能会欺骗pytest的递归检测器.
有没有办法禁用某些测试的递归检查?
我正在运行PyTest 3.0.1
底线:
我想将一个拉取请求分成两个具有不同文件子集的较小拉取请求。我不想按提交拆分,我想按文件拆分。
细节:
假设我有一个分支branch_1
(master
分支之外),我在其中修改了 2 个文件:file_1
和file_2
. 假设这些文件在一次或多次提交中一起修改(更改不能通过提交分开),并且假设这些文件没有以任何方式相互引用。
一段时间后,我想合并branch_1
到master
,但决定只file_1
准备合并。我file_2
以后可能会合并,所以我把它放在一个新的分支上。
所以我创建了一个branch_2
off of branch_1
. branch_2
现在包含对file_1
和的更改file_2
。没关系,因为无论如何branch_2
都会合并branch_1
。
现在,我怎样才能很好地恢复branch_1
以删除对 的更改file_2
?
如果我只是去branch_1
和git checkout master file_2
,它的工作原理,但是:当我合并branch_1
到master
,然后master
进入branch_2
,那么它会删除file_2
。这根本不是我想要的!
基本上我想让它就好像file_2
从来没有存在过一样branch_1
。
PyCharm会自动检测文件的开头test_
,并尝试将它们作为Unittests运行.这是非常体贴的,但似乎有些东西被破坏了,而且在我运行的任何测试中,我得到了
/Users/peter/projects/plato/venv/bin/python2.7 "/Applications/PyCharm CE.app/Contents/helpers/pycharm/utrunner.py" /Users/peter/projects/plato/utils/tools/test_sampling.py::::test_samplers_not_broken true
Testing started at 10:58 AM ...
Traceback (most recent call last):
File "/Applications/PyCharm CE.app/Contents/helpers/pycharm/utrunner.py", line 140, in <module>
all.addTest(testLoader.makeTest(getattr(module, a[2])))
AttributeError: 'TestLoader' object has no attribute 'makeTest'
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
我想做的就是将它们作为普通的python文件运行,但是PyCharm不会让我这么做.Eclipse提供了正常运行或作为unittest运行的选项.这很烦人!我怎样才能做到这一点?
虽然看起来您无法全局禁用此选项,但您可以阻止单个文件作为测试运行.请参阅此问题以获得答案.
matplotlib ×2
pycharm ×2
pytest ×2
python ×2
branch ×1
camera ×1
git ×1
git-branch ×1
git-merge ×1
macos ×1
numpy ×1
pull-request ×1
recursion ×1
sqlalchemy ×1
unit-testing ×1