小编Rod*_*ira的帖子

如何获得多维数组的填充切片?

我在目前正在进行的项目中遇到了一个小问题.

直截了当,让我们假设我有一个二维numpy.array- 我会称之为arr.

我需要切片arr,但这个切片必须包含一些填充,具体取决于所选的间隔.

例:

arr = numpy.array([
    [  1,  2,  3,  4,  5],
    [  6,  7,  8,  9, 10],
    [ 11, 12, 13, 14, 15],
    [ 16, 17, 18, 19, 20],
    [ 21, 22, 23, 24, 25]
])
Run Code Online (Sandbox Code Playgroud)

实际上,numpy的回应arr[3:7, 3:7]是:

array([[19, 20],
       [24, 25]])
Run Code Online (Sandbox Code Playgroud)

但是我需要它填充,好像arr比实际更大.

以下是我需要的回复arr[3:7, 3:7]:

array([[19, 20,  0,  0],
       [24, 25,  0,  0],
       [ 0,  0,  0,  0],
       [ 0,  0,  0,  0]]) …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

多变量比较内联未定义行为?

我告诉我的一个朋友(正在学习C),他不能同时做多个变量比较:

int main(){
    int a[4];

    scanf("%d %d %d %d", &a[0], &a[1], &a[2], &a[3]);

    if(a[0] < a[1] < a[2] < a[3]){
        printf("OK!\n");

    }

    else{
        printf("I've told ya\n");

    }

}
Run Code Online (Sandbox Code Playgroud)

所以,为了证明我是对的,我已经编写了上面的程序,然后我用它执行了它1 2 3 4.令人惊讶的是印刷的OK!.所以我不知道该告诉他什么,因为我确信这不对.

最后,它是否是未定义的行为?

c c++ undefined-behavior

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

整数的分割乘法

我需要一个使用两个 32 位整数作为参数的算法,并返回这些参数的乘法,并将其拆分为另外两个 32 位整数:32 最高位部分和 32 最低位部分。

我会尝试:

uint32_t p1, p2; // globals to hold the result

void mult(uint32_t x, uint32_t y){
    uint64_t r = (x * y);

    p1 = r >> 32;
    p2 = r & 0xFFFFFFFF;

}
Run Code Online (Sandbox Code Playgroud)

虽然它可以工作1,但不能保证机器中存在 64 位整数,也不能保证编译器使用它们。

那么,怎样才是最好的解决方法呢?


1:实际上,它不起作用,因为我的编译器不支持64位整数。

Obs:请避免使用boost

c c++ algorithm

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

标签 统计

c ×2

c++ ×2

algorithm ×1

numpy ×1

python ×1

undefined-behavior ×1