我有一个 C++ 代码,它每次都会创建一个数组。 (需要 C++ 是因为速度 - 如果直接用 Python 构建代码,则需要 8 天才能执行。)代码的结构如下所示:
const int StopTime = 10000;
int main(void){
int Time = 0;
while(Time<StopTime){
//Create a 2D array of dimensions 10x10 filled with integers
}
}
最终结果应是一个动画 gif 图,它将显示随后生成的 10000 个数组的颜色图。我对 Python 的\matplotlib 包非常熟悉,所以我希望将所有这 10000 个数组保存到某个文件中,然后将其导入到用\matplotlib 绘制的 Python 代码中。我怎样才能做到呢?或者是否有一些 C++ 库可以提供帮助而无需导出数组?越容易理解和学习越好。 (我使用 Python 更舒服。)
我已经看过 https://github.com/lava/matplotlib-cpp但我什至无法正确安装它。
请有经验的人帮帮我吗?非常感谢!
PS:我是 C++ 和 Python 的初学者,并且是经过培训的数学家。
最佳答案
解决此类问题的快速而肮脏的方法通常是从主程序生成 python 代码。这是你的 C++ 程序。例如,字符串 [0, 3, 5, 1]
是一个有效的 python 片段,定义了四个值的数组。
所以,如果你有 std::array<T,N>
或您的T[N]
或std::vector<T>
使用您的数据,您可以相当轻松地将它们序列化为可用作 python 解释器输入的内容:
template <typename Os, typename It>
void serialise(Os& os, It begin, It end) {
os << '[';
std::string sep;
for (auto it = begin; it != end; ++it) {
os << sep << *it;
sep = ", ";
}
os << " ]";
}
你可以用哪个来打电话
std::cout << "data = ";
serialise(std::cout,std::begin(data),std::end(data));
std::cout << "\n";
您可以轻松地将其抽象为多维数据结构,以打印类似 [ [1,2,3], [4,5,6] ]
的内容。 .
然后,您可以将程序包装成一个小脚本(使用 bash、python 等),并将 C++ 程序的输出添加到 matplotlib python 脚本中,然后该脚本访问变量 data
.
考虑以下一个非常粗略的草图,您可以如何使用 bash 来做到这一点:
# generate data array
./main > run.py
# add actual python code that accesses data
cat matplot.tmpl.py >> run.py
# run generated python program
python3 run.py
关于python - 如何制作 C++ 数组的动画色彩图?导出到Python并使用\matplotlib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63668328/