小编luk*_*ell的帖子

如何在matplotlib中遮蔽曲线下的区域

我想用matplotlib来说明两个区域之间的定积分:x_0和x_1.

如何在给定下图的情况下,将matplotlib中曲线下的区域从x = -1阴影到x = 1

import numpy as np
from matplotlib import pyplot as plt
def f(t):
    return t * t

t = np.arange(-4,4,1/40.)
plt.plot(t,f(t))
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

28
推荐指数
3
解决办法
6万
查看次数

解码C声明并使用它

我正在使用GeomagnetismLibrary,其中一个函数声明有一个格式

int MAG_robustReadMagModels(char *filename, MAGtype_MagneticModel *(*magneticmodels)[], int array_size)
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我把它简化为专注于我的目标

void blah(int *(*a)[])
{
    (*a)[0] = malloc(sizeof(int));
    (**a)[0] = 12;
}
Run Code Online (Sandbox Code Playgroud)

如果我想调用这个函数,我必须声明一个变量,如:

int *a[1];
blah(&a);
Run Code Online (Sandbox Code Playgroud)

现在在我的情况下,不管什么a永远不会有多个元素,所以我不想声明a为数组,而只是像指针一样

int *a;
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以在调用时blah根据需要键入强制转换或取消引用这个变量而不会导致段错误?

另外,您如何根据类型转换定义该类型,例如:( int *[]*)?

谢谢

c pointers declaration

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

VIM范围行号寄存器

是否有一个寄存器或变量保存当前所选范围的行号?

line(".") 适用于当前行,但在视觉范围内有一个吗?

编辑

如下所述,'<'>寄存器保存起​​始行和结束行.

除了使用上面的内容之外,我最后做的是在VimScript中编写一个函数,它接受这些行号并执行外部命令,我将在下面包含它:

function! Github(line1, line2)
    execute "!github -f " . expand("%") . " -l " . a:line1 . " -n " . a:line2
endfunction
com! -range Github call Github(<line1>, <line2>)
Run Code Online (Sandbox Code Playgroud)

我是VimScript的新手,但从我从最初的谷歌搜索收集的内容来看,上面的函数接受了一个范围.然后我获取开始和结束行号并使用它们来执行github与Github API接口的外部脚本和/或根据git信息打开浏览器到github页面.

git vim

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

Javascript"this"被事件监听器覆盖

我可能做错了但是在尝试将一些面向对象的编程应用于Javascript时我发现了一些有趣的行为.考虑以下

function Bug(element) {
    this.focusedCell = null;
    element.addEventListener('click', this.onClick, true);
};

Bug.prototype.onClick = function(event){
    console.log("this is: ");
    console.log(this);
};
Run Code Online (Sandbox Code Playgroud)

当我从控制台调用该方法时,我看到了正确的"this"实例,但当我单击文档中的元素时,我看到文档元素代替实例.所以...使用实例方法的事件监听器可能不是一个好主意,至少我正在这样做.

所以问题是:

  • 有没有像这样的事件监听器调用javascript对象的实例方法,同时保留调用中的实例?

  • 这样做有更好的模式吗?

编辑:除了Chrome之外,我还没有尝试过这个.但我会想象行为是一样的.

javascript oop events

4
推荐指数
2
解决办法
1052
查看次数

异步操作的结果列表

我的目标是从10(或其他任意数量)的异步操作中获取结果列表.

我正在使用com.google.guava并发中的实用程序,如果有人可以慷慨地指出我正确的方向,我会非常感激.

在示例中,我正在尝试获取一个列表successfulBombs(Bomb几乎是一个空对象,但在创建模拟服务调用执行问题时有随机概率抛出问题)

ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
List<ListenableFuture<Bomb>> bombs;
ListenableFuture<List<Bomb>> successfulBombs;
Run Code Online (Sandbox Code Playgroud)

编辑:

这是我到目前为止所提出的,但即使它应该有一些成功的元素,列表也是空的......我无法辨别为什么

ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
List<ListenableFuture<Bomb>> bombs = new ArrayList<ListenableFuture<Bomb>>();
for(int i=0;i<10;i++)
{
    ListenableFuture<Bomb> bomb = service.submit(new Callable<Bomb>(){
        public Bomb call() throws Problem
        {
            return craftBomb();
        }
    });
}
ListenableFuture<List<Bomb>> successfulBombs = Futures.successfulAsList(bombs);
Futures.addCallback(successfulBombs, new FutureCallback<List<Bomb>>(){
    public void onSuccess(List<Bomb> bombs)
    {
        System.out.println("My successful bombs");
        for(Bomb b : bombs)
        {
            System.out.println(b);
        }
    }
    public void onFailure(Throwable thrown)
    {
        System.err.println("There was a problem making …
Run Code Online (Sandbox Code Playgroud)

java concurrency asynchronous guava

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

C中的qsort段错误

我正在尝试根据手册页使用 qsort,但无论我尝试什么,我都会遇到段错误

这是重要的代码部分

int compare_dirent(const void *a, const void *b)
{
    const struct dirent *first = (const struct dirent *) a;
    const struct dirent *second = (const struct dirent *) b;

    return first->d_ino - second->d_ino;
}


int process(FILE* output,const char *dirname, int flags)
{
    struct dirent *entries = NULL;
    struct dirent *table[256];
    int entry_num = 0;
    DIR *directory = NULL;
    char cwd[1024];

    getcwd(cwd,1024);
    bzero(table,256);

    directory = opendir(dirname);
    while((entries = readdir(directory))!=NULL)
    {
        if(entries->d_type == DT_REG)
        {
            fprintf(output,"%s\t\n",entries->d_name);
            table[entry_num] = entries;
            entry_num++; …
Run Code Online (Sandbox Code Playgroud)

c qsort segmentation-fault

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

从float32 - > float64回到float32,我可以失去精度吗?

是否有可能失去从numpy float32到python float(float64)返回到numpy float32的任何保真度或精度?

我似乎无法找到丢失数据的情况,但我身边的每个人都声称世界会因为数据丢失而结束.我只需要找到一个文档/示例,证明在继续之前数据已丢失.

任何指导我正确方向的帮助表示赞赏.

这是我看到的一个典型用例:

def serialize(val):
    # val is a np.float32
    return val.astype(float)


def deserialize(msg):
    return np.float32(msg)

message = '1.23456789'
outgoing = serialize(message)
incoming = deserialize(message)
Run Code Online (Sandbox Code Playgroud)

python floating-point numpy

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

C,传递2维数组

我现在几年没有使用纯C了,但我似乎无法使这个真正基本的用例工作.这是简单C中的简单用例,实际情况包含在HDF库中,但我需要先从这开始.

#include <stdio.h>

void print_data(float **data, int I, int J)
{
    for(int i=0;i<I;i++)
    {
        for(int j=0;j<J;j++)
            printf("%02.2f\t", data[i][j]);
        printf("\n");
    }
}
void initialize_data(float **data, int I, int J)
{
    for(int i=0;i<I;i++)
        for(int j=0;j<J;j++)
            data[i][j] = i * 6 + j + 1;
}
int main(int argc, char *argv[])
{
    float data[4][6];
    int I=4;
    int J=6;
    initialize_data((float **)data, 4,6);
    print_data((float **)data, 4, 6);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上述程序将导致失败并引发EXC_BAD_ACCESS信号.GDB输出:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00007fff5fc0131a
0x0000000100000de6 …
Run Code Online (Sandbox Code Playgroud)

c

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