小编use*_*241的帖子

Re:使用boost :: make_transform_iterator进行引用访问

我正在尝试使用boost :: make_transform_iterator为自定义类创建迭代器,其数据保存在地图中,迭代器使用键向量来访问值.

在我的问题中,地图的值是容纳大数据的容器.由于我无法复制数据,我想通过迭代器通过引用访问数据.但是,在执行此操作时,数据已损坏,例如我附加的简单示例的输出.

据我所知,问题在于使用from_key仿函数,它是使用对映射的引用初始化的,以及boost :: make_transform_iterator的语义.

任何想法如何使用boost正确地做到这一点?

谢谢,

帕特里克

#include <iostream>
#include <string>
#include <vector>

#include <boost/unordered_map.hpp>
#include <boost/iterator/transform_iterator.hpp>
#include <boost/assign.hpp>
#include <boost/assign/std/vector.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/ref.hpp>

using namespace boost::assign;
namespace bl = boost::lambda;

class holder
{
    public:
        holder() : v() {};
        holder( const std::vector<double>& in ) : v(in) {};

        std::vector<double>& vector()             { return v; };
        const std::vector<double>& vector() const { return v; };

    private:
        std::vector<double> v;
};

class from_key
{
    public:

        typedef holder result_type;

        from_key( const …
Run Code Online (Sandbox Code Playgroud)

c++ boost

6
推荐指数
1
解决办法
1610
查看次数

matplotlib绘制小图像而无需重新采样

我正在尝试使用matplotlib在python中绘制一个小图像,并希望显示的轴具有与它生成的numpy数组相同的形状,即数据不应重新采样.换句话说,数组中的每个条目应对应于屏幕上的像素(或其左侧).这看起来微不足道,但即使在网上拖网一段时间之后,我似乎无法让它起作用:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = np.random.rand(30,40)

fig = plt.figure()
fig.add_axes(aspect="equal",extent=[0, X.shape[1], 0, X.shape[0]])
ax = fig.gca()
ax.autoscale_view(True, False, False)
ax.imshow(X, cmap = cm.gray)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
4097
查看次数

使用mlab在mayavi中用文本注释许多点

我正在尝试使用mayavi.mlab注释使用points3d()函数绘制的点.每个点都与一个标签相关联,我希望使用text3d()函数在点旁边绘制标签.绘制点很快,但是mlab.text3d()函数似乎不接受坐标数组,所以我必须循环遍历点并单独绘制文本,这非常慢:

        for i in xrange(0, self.n_labels):
            self.mlab_data.append(
                mlab.points3d( pX[self.labels == self.u_labels[i], 0],
                               pX[self.labels == self.u_labels[i], 1],
                               pX[self.labels == self.u_labels[i], 2],
                               color=self.colours[i],
                               opacity=1,
                               scale_mode="none",
                               scale_factor=sf ) )

            idcs, = np.where(self.labels == self.u_labels[i])
            for n in idcs.flatten():
                mlab.text3d( pX[n, 0],
                             pX[n, 1],
                             pX[n, 2],
                             "%d" % self.u_labels[i],
                             color=self.colours[i],
                             opacity=1,
                             scale=sf )
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以加快速度吗?此外,是否可以添加图例(例如在matplotlib中),我在文档中找不到任何内容.

谢谢,

帕特里克

python data-visualization mayavi

6
推荐指数
1
解决办法
2719
查看次数

标签 统计

python ×2

boost ×1

c++ ×1

data-visualization ×1

matplotlib ×1

mayavi ×1