小编Pet*_*ter的帖子

获取默认线条颜色循环

我注意到你绘制的第一行是蓝色,然后是绿色,然后是红色,依此类推.

有没有办法访问这个颜色列表?我已经看过一百万篇关于如何更改颜色循环或访问迭代器的帖子,而不是如何获取matplotlib默认循环的颜色列表.

matplotlib

64
推荐指数
4
解决办法
4万
查看次数

如何获取SQLAlchemy对象的主键名称?

我只想以编程方式确定SQLalchemy模型的主键名称.

sqlalchemy

44
推荐指数
2
解决办法
1万
查看次数

Matplotlib/PyPlot中的快速实时绘图

多年来,我一直在努力在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 = ...,则不会出现第二个图). …

matplotlib

34
推荐指数
2
解决办法
3万
查看次数

在Python中快速计算Pareto前沿

我在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 numpy

17
推荐指数
2
解决办法
1万
查看次数

Python:无需 OpenCV 即可访问相机

同志们,

我想用 Python 从笔记本电脑的相机中捕捉图像。目前所有迹象都指向 OpenCV。问题是 OpenCV 是安装的噩梦,每次在新系统上重新安装代码时,它都会再次发生。

有没有更轻量级的方式在 Python 中捕获相机数据?我正在寻找具有以下效果的东西:

$ pip install something
$ python
>>> import something
>>> im = something.get_camera_image()
Run Code Online (Sandbox Code Playgroud)

我在 Mac 上,但欢迎任何平台上的解决方案。

python macos camera

11
推荐指数
1
解决办法
1万
查看次数

IPython Notebook - 关闭浏览器后继续打印到笔记本输出

我正在运行在服务器上的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)

据推测,这将在未来的某个时间点得到修复,但同时在关闭浏览器之后还有一些容易入侵使其继续打印到笔记本输出?奖励点,如果它适用于内嵌图像.

ipython-notebook

10
推荐指数
1
解决办法
3191
查看次数

在PyCharm中禁用Pytest

如果我有一个以"test_"开头的文件,PyCharm会尝试使用PyTest运行它.我想正常运行它(作为常规Python脚本).我怎样才能做到这一点?

使用解决方案进行编辑:正如A. Romeau所指出的,有很多方法可以做到这一点:

  1. 对于要正常运行的给定测试文件:

    • 运行文件...请注意它在py.test或其他测试框架下运行.
    • 单击右上角的下拉框,上面写着"py.test in test_something.py".
    • 单击"编辑配置".这将打开一个窗口,其中"Python"和"Python测试"作为左侧的选项.你会注意到你在"Python测试"部分.
    • 在"目标:"字段中复制文件路径.
    • 单击左上角的红色" - ",这将删除该测试配置.
    • 现在,单击绿色"+",选择"Python",然后将复制的文件路径粘贴到"脚本:"字段中.
    • 按"确定".您的测试文件现在将作为普通脚本运行.
  2. 在pytest中编辑你的setup.cfg文件(有一些我现在不知道的选项),这样它就不会"发现"你的测试(我没试过这个).

两种解决方案都不好.1是不方便的,因为你需要对你想要运行的每个文件进行大的多次点击和处理.2是不方便的,因为它干扰你正常运行pytest,从控制台.

JetBrains:请为了上帝的爱,只需添加一个禁用自动单元测试的选项.这非常烦人,因为pytest/UnitTest的输出在尝试追踪测试中的错误时没有常规解释器的输出那么有用(没有链接到故障线路,不能单独运行给定功能等) .

PyCharm"问题"已在此处开启.

unit-testing pytest pycharm

10
推荐指数
2
解决办法
5953
查看次数

禁用PyTest递归检查?

当我运行PyTest时,我得到一些测试失败

....
!!! Recursion detected (same locals & position)
Run Code Online (Sandbox Code Playgroud)

但是,当我手动运行测试时,我发现没有无限递归.我的代码做了一些奇怪的事情,可能会欺骗pytest的递归检测器.

有没有办法禁用某些测试的递归检查?

我正在运行PyTest 3.0.1

recursion pytest

10
推荐指数
1
解决办法
882
查看次数

Git:如何按文件(而不是通过提交)拆分分支?

底线:

我想将一个拉取请求分成两个具有不同文件子集的较小拉取请求。我不想按提交拆分,我想按文件拆分。

细节:

假设我有一个分支branch_1master分支之外),我在其中修改了 2 个文件:file_1file_2. 假设这些文件在一次或多次提交中一起修改(更改不能通过提交分开),并且假设这些文件没有以任何方式相互引用。

一段时间后,我想合并branch_1master,但决定只file_1准备合并。我file_2以后可能会合并,所以我把它放在一个新的分支上。

所以我创建了一个branch_2off of branch_1. branch_2现在包含对file_1和的更改file_2。没关系,因为无论如何branch_2都会合并branch_1

现在,我怎样才能很好地恢复branch_1以删除对 的更改file_2

如果我只是去branch_1git checkout master file_2,它的工作原理,但是:当我合并branch_1master,然后master进入branch_2,那么它会删除file_2。这根本不是我想要的!

基本上我想让它就好像file_2从来没有存在过一样branch_1

git branch git-merge pull-request git-branch

9
推荐指数
1
解决办法
2400
查看次数

在PyCharm中禁用自动单元测试

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运行的选项.这很烦人!我怎样才能做到这一点?

虽然看起来您无法全局禁用此选项,但您可以阻止单个文件作为测试运行.请参阅此问题以获得答案.

pycharm

7
推荐指数
1
解决办法
7740
查看次数