相关疑难解决方法(0)

malloc和calloc之间的区别?

做的有什么区别:

ptr = (char **) malloc (MAXELEMS * sizeof(char *));
Run Code Online (Sandbox Code Playgroud)

要么:

ptr = (char **) calloc (MAXELEMS, sizeof(char*));
Run Code Online (Sandbox Code Playgroud)

什么时候使用calloc而不是malloc是一个好主意,反之亦然?

c malloc calloc

743
推荐指数
13
解决办法
51万
查看次数

np.empty与np.zeros的速度

我正在使用numpy版本1.14.3和python 2.7.12。

引用问题,我发现在使用np.zeros和np.empty初始化数组之间,速度有很大不同。但是,输出是相同的。

import numpy as np
r = np.random.random((50, 100, 100))
z = np.zeros(r.shape)
e = np.empty(r.shape)
np.allclose(e, z)
Run Code Online (Sandbox Code Playgroud)

这返回True。但是,计时功能%timeit给出了截然不同的结果:

%timeit z = np.zeros(r.shape)
Run Code Online (Sandbox Code Playgroud)

10000次循环,最佳3:每个循环143 µs

%timeit e = np.empty(r.shape)
Run Code Online (Sandbox Code Playgroud)

1000000循环,最佳3:每个循环1.83 µs

上面引用的先前接受的答案说,这np.zeros始终是更好的选择,并且它也更快。

为什么不使用比np.zeros快80倍并返回相同答案的np.empty?

编辑 正如user2285236指出,翻转初始化的顺序ze将打破平等,因为它会覆盖在相同的存储区。

python numpy python-2.7

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

标签 统计

c ×1

calloc ×1

malloc ×1

numpy ×1

python ×1

python-2.7 ×1