小编oph*_*mac的帖子

使用 numpy.tensordot 替换嵌套循环

我有一段代码,但我想提高性能。我的代码是:

lis = []
for i in range(6):
    for j in range(6):
        for k in range(6):
            for l in range(6):
                lis[i][j] += matrix1[k][l] * (2 * matrix2[i][j][k][l] - matrix2[i][k][j][l])  
print(lis)
Run Code Online (Sandbox Code Playgroud)

matrix2 是一个 4 维 np-array,matrix1 是一个二维数组。

我想通过使用 np.tensordot(matrix1, matrix2) 来加速这段代码,但后来我迷路了。

python performance numpy

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

通过使用 size_t 的否定翻转最低有效一位

我最近遇到了一段据称可以正常工作的代码,但我不太明白为什么。

size_t a = 19;
std::cout<<std::bitset<8>(a)<<std::endl;
a ^= a & -a;
std::cout<<std::bitset<8>(a)<<std::endl;
Run Code Online (Sandbox Code Playgroud)

这段代码将反转给定无符号整数的最低有效位。我宁愿只写a ^= 1;,但我对为什么上面的代码实际上有效感到困惑。我认为做出unsigned int否定会导致未定义的行为?

c++ bit-manipulation bit

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

标签 统计

bit ×1

bit-manipulation ×1

c++ ×1

numpy ×1

performance ×1

python ×1