appending to NumPy arrays is catastrophically slower than appending to ordinary lists. It's an operation that they are not at all designed for
下面是一个小基准:
# measure execution time
import timeit
import numpy as np
def f1(num_iterations):
x = np.dtype((np.int32, (2, 1)))
for i in range(num_iterations):
x = np.append(x, (i, i))
def f2(num_iterations):
x = np.array([(0, 0)])
for i in range(num_iterations):
x = np.vstack((x, (i, i)))
def f3(num_iterations):
x = []
for i in range(num_iterations):
x.append((i, i))
x = np.array(x)
N = 50000
print timeit.timeit('f1(N)', setup='from __main__ import f1, N', number=1)
print timeit.timeit('f2(N)', setup='from __main__ import f2, N', number=1)
print timeit.timeit('f3(N)', setup='from __main__ import f3, N', number=1)
如果我明白你的意思,你可以使用
vstack
:我同意@user2357112的意见:
下面是一个小基准:
我既不使用np.append也不使用vstack,我只需要正确地创建python数组,然后使用它来构造np.array
编辑
这是我笔记本电脑上的基准输出:
[在14.3秒内完成]
您需要将形状提供给numpy dtype,如下所示:
输出
[参考文献][1]http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
相关问题 更多 >
编程相关推荐