小编syn*_*tik的帖子

matplotlib得到ylim值

matplotlib用来绘制Python的数据(使用ploterrorbar函数).我必须绘制一组完全独立且独立的图,然后调整它们的ylim值,以便可以轻松地进行视觉比较.

如何ylim从每个绘图中检索值,以便我可以分别获取下ylim值和上ylim值的min和max,并调整绘图以便可以直观地比较它们?

当然,我可以分析数据并提出我自己的自定义ylim值...但我想用matplotlib它为我做这件事.关于如何轻松(和有效)地做到这一点的任何建议?

这是我使用的Python函数matplotlib:

import matplotlib.pyplot as plt

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    # axes
    axes = plt.gca()
    axes.set_xlim([-0.5, len(values) - 0.5])
    axes.set_xlabel('My x-axis title')
    axes.set_ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

    # close figure
    plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib

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

在向量<double>上使用std :: max_element

我正在尝试使用std::min_elementstd::max_element返回双精度矢量中的min和max元素.我的编译器不喜欢我目前正在尝试使用它们,我不理解错误消息.我当然可以编写自己的程序来查找最小值/最大值,但我想了解如何使用这些函数.

#include <vector>
#include <algorithm>

using namespace std;

int main(int argc, char** argv) {

    double cLower, cUpper;
    vector<double> C;

    // code to insert values in C not shown here

    cLower = min_element(C.begin(), C.end());
    cUpper = max_element(C.begin(), C.end());

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

这是编译器错误:

../MIXD.cpp:84: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
../MIXD.cpp:85: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
Run Code Online (Sandbox Code Playgroud)

有人请解释我做错了什么吗?

c++ vector max min

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

在bash中连接两个没有换行符的命令的输出

我需要的:

假设我有两个命令,A并且B每个命令返回一个单行字符串(即一个没有换行符的字符串,除了最后可能为1).我需要一个命令(或管道命令序列)C,它连接命令的输出AB在同一行上,并在它们之间插入1个空格字符.

它应该如何工作的示例:

例如,假设命令的输出A是引号之间的字符串:

"The quick"
Run Code Online (Sandbox Code Playgroud)

并且假设命令的输出B是引号之间的字符串:

"brown fox"
Run Code Online (Sandbox Code Playgroud)

然后我希望命令的输出是引号之间C字符串:

"The quick brown fox"
Run Code Online (Sandbox Code Playgroud)

我最好的尝试解决方案

在试图弄清楚C自己,似乎管道命令的后续序列应该工作:

{ echo "The quick" ; echo "brown fox" ; } | xargs -I{} echo {} | sed 's/\n//'
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个命令的输出是

The quick
brown fox
Run Code Online (Sandbox Code Playgroud)

bash sed pipe concatenation

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

vim增量搜索在文件末尾停止

在Vim中,当我通过输入/xI 进行增量搜索"x" 然后按下n跳转到下一个匹配项.如果我刚刚匹配文件的最后一次出现,当我按下n光标将开始在文件的开头寻找匹配---它将循环回到开头. 我不希望它循环回到开头. 我希望n在它到达最后一次之后再找不到任何匹配.我想要这种行为的原因是我可以很容易地看到我搜索整个文件的时间.

有谁知道如何影响这种行为?

仅供参考:我使用以下.vimrc选项:

colorscheme zenburn   " zenburn colorscheme

set nocompatible      " prevent Vim from emulating Vi's bugs
set scrolloff=5       " keeps cursor away from top/bottom of screen
set nobackup          " don't make automatic backups

set incsearch         " incremental searching
set ignorecase        " case insensitive matching
set smartcase         " smart case matching
set showmatch         " show matching bracket

set autoindent        " indentation
set smartindent       " indentation
set cindent           " …
Run Code Online (Sandbox Code Playgroud)

vim search

36
推荐指数
1
解决办法
6034
查看次数

c ++ force std :: cout flush(打印到屏幕)

我有以下代码:

std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!\n";                  // output 2
Run Code Online (Sandbox Code Playgroud)

然而,问题是输出#1和输出#2经常(几乎)同时出现.也就是说,输出#1通常直到computations()返回后才会打印到屏幕上.由于输出#1的整个目的是指示某些事情在后台发生(从而鼓励用户耐心),因此这个问题并不好.

有没有办法强制std::cout缓冲区在computations()通话前打印?或者,是否有其他方式(使用其他东西std::cout)打印到标准输出,可以解决这个问题?

c++ cout flush

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

"没有模板参数使用"

我之前已经意识到类似的问题,但是我读过其中的几个,但仍然没有看到我出错的地方.当我只是编写我的类而不将原型与定义分开时,一切正常.当我将原型和定义分开时,问题就出现了,如下所示:

template<class T> class VisitedSet { 
public:
    VisitedSet(); 
    int getSize(); 
    void addSolution(const T& soln); 
    void evaluate(); 
private:
    vector<T> vec;
    int iteration;
};
Run Code Online (Sandbox Code Playgroud)

作为给出这个错误的定义的一个例子:

int VisitedSet::getSize() {
    return vec.size();
Run Code Online (Sandbox Code Playgroud)

我以前从未做过模板课,所以请原谅我这里的问题是微不足道的.

c++ templates class

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

删除/隐藏git分支而不删除提交历史记录

情况:

我有一个主要的回购,主要的开发分支和许多"实验"分支从它发芽(例如,exp1exp2).这些实验分支的目的是作为产生数值结果的实验​​的占位符.我记录了实验分支的分支名称(和提交ID),因此我可以返回到提交,以准确查看结果背后的代码和历史记录.

但是,现在,有很多实验分支,很难看到主树.所以,我正在重新思考将占位符保留在每组结果背后的代码(即每个实验)的策略.显然我可以在每个分支保存工作目录,但保留提交历史记录也会很好.

可能的方法:

解决此问题的一种方法是将实验分支移动到它们自己的独立存储库中,每个存储库都以dev分支的提交历史记录中的相应节点的子节点为根.这是我的意思的说明:

在此输入图像描述

点击此处查看大图版本(在imgur.com上).

因此,例如,对于分支exp1,我想将提交导出A->B->C到以提交为根的单独repo A.然后,我可以记录提交的哈希值,P1以便我知道exp1分支的后果.

题:

我怎样才能做到这一点?

更好的问题:

另一方面,我强烈怀疑有一个更好的策略来做我想做的事情 - 即,整理树进行目视检查,但将占位符保留在先前的分支中,以便我可以在需要时返回它们.那么,任何人都可以为此推荐一个策略吗?

git git-branch git-branch-sculpting

25
推荐指数
1
解决办法
9247
查看次数

在使用Eclipse CDT进行调试时,如何在gdb提示符下输入命令?

我正在使用Eclipse(Helios SR1)CDT进行C++开发.Eclipse与GDB接口进行调试,但我无法弄清楚如何在通过Eclipse接口进行调试时手动向GDB输入命令.例如,能够输入p myVar而不必单击并滚动局部变量窗口将是很好的.

注意:我想使用Eclipse接口进行调试的唯一原因是因为我喜欢它如何显示正在逐步执行的代码.因此,如果有人可以选择建议允许我查看正在执行的代码,请建议!(我使用过DDD,但我不是特别喜欢它.)

c++ gdb eclipse-cdt

19
推荐指数
1
解决办法
9006
查看次数

为什么编译超过100,000行的std :: vector :: push_back需要很长时间?

我正在编译一个C++库,它定义了一个从一组数据点中随机采样的函数.数据点存储在a中std::vector.有126,272个std::vectorpush_back语句,其中有问题的向量是类型double.编译需要很长时间.

为什么这需要这么久?(除了std::vectorpush_back语句之外的所有代码都需要不到1秒的时间来编译,因为其他代码很少.)

c++ gcc compilation stdvector

19
推荐指数
2
解决办法
1806
查看次数

要检查的Bash If-statement如果string等于几个字符串文字中的一个

在我的bash脚本,我检查的第一个参数是要么-,0或者+使用下面if的语句:

LEVEL=$1
if [ "$LEVEL" -ne "-" ] && [ "$LEVEL" -ne "0" ] && [ "$LEVEL" -ne "+" ]
then
     echo "The value of LEVEL must be either -, 0, or +!"
     exit 1
fi
Run Code Online (Sandbox Code Playgroud)

但它给了我错误[: -: integer expression expected,指的是if声明条件的行.

我一直在尝试许多不同的语法(例如,双重与单一括号,引用与非引用变量和字符串文字),但我无法弄明白.

bash

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