小编ahe*_*elm的帖子

Matplotlib:imshow中的set_data没有效果

我有一个奇怪的错误,如果没有你的帮助,我无法修复.imshow在matplotlib中设置图像后,即使我用方法更改它,它也始终保持不变set_data.看看这个例子:

import numpy as np
from matplotlib import pyplot as plt


def newevent(event):
    haha[1,1] += 1
    img.set_data(haha)
    print img.get_array()    # the data is change at this point
    plt.draw()

haha = np.zeros((2,2))
img = plt.imshow(haha)
print img.get_array()        # [[0,0],[0,0]]
plt.connect('button_press_event', newevent)
plt.show()
Run Code Online (Sandbox Code Playgroud)

绘制之后,该方法set_data不会改变绘图中的任何内容.有人能解释一下为什么吗?

编辑

只是添加了几行来指出我真正想做的事情.我想在按下鼠标按钮后重绘数据.我不想删除整个数字,因为如果只有一件事发生变化就会很愚蠢.

python matplotlib

14
推荐指数
2
解决办法
9896
查看次数

在python中存储大量数据

也许我开始对我的问题做一个小介绍.我正在写一个python程序,它将用于不同物理模拟的后处理.每次模拟都可以创建高达100 GB的输出.我处理不同时间步骤的不同信息(如位置,字段和密度......).我希望能够同时访问所有这些数据,这是不可能的,因为我的系统上没有足够的内存.通常我使用读取文件,然后执行一些操作并清除内存.然后我读取其他数据并执行一些操作并清除内存.

现在我的问题.如果我这样做,那么我花了很多时间不止一次读取数据.这需要花费很多时间.我想只读一次并存储它以方便访问.您是否知道存储大量数据的方法,这些数据非常快或者不需要大量空间.

我刚刚创建了一个比普通open-read快十倍的方法.但我使用cat(linux命令).这是一个非常脏的方法,我想把它从我的脚本中删除.

是否可以使用数据库来存储此数据并使数据比正常读取更快?(抱歉这个问题,但我不是计算机科学家,我在数据库背后没有很多知识).

编辑:

我的cat-code看起来像这样 - 只是一个例子:

out = string.split(os.popen("cat "+base+"phs/phs01_00023_"+time).read())
# and if I want to have this data as arrays then I normally use and reshape (if I
# need it)
out = array(out)
out = reshape(out)
Run Code Online (Sandbox Code Playgroud)

通常我会使用一个numpy方法numpy.loadtxt,需要像正常读数一样的时间:

f = open('filename')
f.read()
...
Run Code Online (Sandbox Code Playgroud)

我认为loadtxt只需使用常规方法和一些额外的代码行.

我知道有一些更好的方法可以读出数据.但我发现的一切都很慢.我现在尝试mmap,希望我会有更好的表现.

python

6
推荐指数
2
解决办法
1855
查看次数

分配给C++类方法?

我正在研究一个小的C++示例,以学习C++.有人写了主要功能,看起来像这样:

int main()
{
    map2d p1(1.,3.);       
    const map2d p2(0.,0.);

    p1.x();            // testing the access to member variable
    p2.x();            // testing the access to member variable

    p1.x() = 3.;       // changing the member variable

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

好的.我创建了一个名为map2d的类.到目前为止,工作变量必须更改p1.x() = 3.;.我的问题是,怎么做?我的班级看起来像这样:

class map2d
{
    private: 
        double xp, yp;
    public:
        map2d (double xnew, double ynew): xp(xnew), yp(ynew) {}

        double x() const { return xp; }   // here is my problem
};
Run Code Online (Sandbox Code Playgroud)

我正在考虑返回一个参考&,但这没有成功.我使用了类似的东西:

double& x() const { return xp; } …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

python ×2

c++ ×1

matplotlib ×1