小编Abu*_*akr的帖子

C++ 11中的boost :: thread_group?

boost::thread_groupC++ 11中有什么类似的东西吗?

我只是试图将我的程序从使用移植boost:thread到C++ 11线程,并且无法找到任何等效的东西.

c++ boost boost-thread c++11

25
推荐指数
2
解决办法
9366
查看次数

如何确定哪些点位于多边形内部哪些不是(大量点)?

我有一大堆数据点(100,000+)存储在一个二维numpy数组中(第一列:x坐标,第二列:y坐标).我还有几个1维数组存储每个数据点的附加信息.我现在想要从这些一维数组的子集创建图,其中只包含给定多边形中的点.

我提出了以下解决方案,既不优雅也不快:

#XY is the 2D array.
#A is one of the 1D arrays.
#poly is a matplotlib.patches.Polygon

mask = np.array([bool(poly.get_path().contains_point(i)) for i in XY])

matplotlib.pylab.hist(A[mask], 100)
matplotlib.pylab.show()
Run Code Online (Sandbox Code Playgroud)

你能帮我改进一下这段代码吗?我尝试使用np.vectorize而不是列表理解,但无法让它工作.

python numpy matplotlib

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

即使忽略QCloseEvent,也会隐藏窗口

我目前正在尝试将我的Qt应用程序移植到Mac OSX,只是遇到了以下问题:

我的一个窗口类(派生自QMainWindow)在按下关闭按钮时显示一个对话框,您可以在其中保存/放弃更改或中止.这是通过重新实现closeEvent来完成的,如下所示:

void ResultsWindow::closeEvent(QCloseEvent* event)
{
    if (isWindowModified())
    {
        activateWindow();
        QMessageBox::StandardButton button = QMessageBox::warning(
                this,
                APPLICATION_NAME,
                "Warning: data have been modified. Do you want to save the "
                    "changes?",
                QMessageBox::Save | QMessageBox::Discard | QMessageBox::Abort,
                QMessageBox::Abort);
        switch (button)
        {
            case QMessageBox::Save:
                if (!Save())
                {
                    event->ignore();
                    return;
                }
                break;
            case QMessageBox::Discard:
                break;
            case QMessageBox::Abort:
            default:
                event->ignore();
                return;
        }
    }
    event->accept();
}
Run Code Online (Sandbox Code Playgroud)

预期的行为如下:如果单击"中止",则忽略该事件并且窗口保持打开状态.这在Linux和Windows上按预期工作.但是,在OSX上,窗口是隐藏的,但在后台仍然有效.我在这里错过了什么?如何确保窗户保持打开状态?

更新: 我不知何故认为这是Qt5的一个问题.如果该closeEvent方法只包含event->ignore();窗口仍然关闭.我不认为这是预期的行为.也许我应该把这个问题发布到Qt邮件列表......

更新:这是Qt中的一个错误,自5.1版本开始解决.

c++ macos qt qt5

12
推荐指数
1
解决办法
1353
查看次数

从大型数据集中高效创建二维直方图

我想在存储在HDF5文件中的大型数据集(100000+样本)中创建python中的2d直方图.我想出了以下代码:

import sys
import h5py
import numpy as np
import matplotlib as mpl
import matplotlib.pylab

f = h5py.File(sys.argv[1], 'r')

A = f['A']
T = f['T']

at_hist, xedges, yedges = np.histogram2d(T, A, bins=500)
extent = [yedges[0], yedges[-1], xedges[0], xedges[-1]]

fig = mpl.pylab.figure()
at_plot = fig.add_subplot(111)

at_plot.imshow(at_hist, extent=extent, origin='lower', aspect='auto')

mpl.pylab.show()

f.close()
Run Code Online (Sandbox Code Playgroud)

执行大约需要15秒(100000个数据点).然而,CERN的Root(使用自己的树数据结构而不是HDF5)可以在不到1秒内完成此操作.你知道如何加速代码吗?如果它有用,我也可以改变HDF5数据的结构.

python numpy matplotlib

8
推荐指数
1
解决办法
5368
查看次数

如何使用Doxygen记录宏生成的类?

我使用宏以下列方式生成类:

generator.h:

class CLASS_NAME : public parent
{
    //generate variables with names given by CLASS_VARIABLES using complicated
    //Boost.Preprocessor stuff.
};

#undef CLASS_NAME
#undef CLASS_VARIABLES
Run Code Online (Sandbox Code Playgroud)

myclass.h:

#define CLASS_NAME MyClass
#define CLASS_VARIABLES (a, b, c, x, y, z)
#include "generator.h"
Run Code Online (Sandbox Code Playgroud)

实际的类更复杂,并使用各种Boost.Preprocessor宏.有没有办法通过向generator.h添加注释来自动记录使用Doxygen生成的类,或者生成带文档的示例类?我尝试过启用ENABLE_PREPROCESSING和MACRO_EXPANSION,但这似乎不够.

c++ macros doxygen

7
推荐指数
2
解决办法
2074
查看次数

标签 统计

c++ ×3

matplotlib ×2

numpy ×2

python ×2

boost ×1

boost-thread ×1

c++11 ×1

doxygen ×1

macos ×1

macros ×1

qt ×1

qt5 ×1