python未知长度数组_将元素动态添加到未知最终长度的
python获取数组长度
NumPy数组中
如果我定义:
def get_list_of_numbers():
n = np.random.randint(0,10)
return list(range(n))
def foo(K):
x=[]
for i in range(K):
y = get_list_of_numbers()
return x
简单地调⽤get_list_of_numbers花费最多的时间。⾄于结果到⼀个数组并不需要太多的时间:
In [69]: timeit foo(1000)
100 loops, best of 3: 5.9 ms per loop
In [70]: timeit np.array(foo(1000))
100 loops, best of 3: 6.38 ms per loop
In [73]: timeit -n1000 get_list_of_numbers()
1000 loops, best of 3: 6.04 µs per loop
让我们试着预分配办法:
def foo1(K):
x = np.zeros(K*10,int)
cnt = 0
for i in range(K):
y = get_list_of_numbers()
n = len(y)
x[cnt:cnt+n] = y
cnt += n
x = x[:cnt]
return x
In [80]: timeit foo1(1000)
100 loops, best of 3: 10.1 ms per loop
阵列的级联⽅法
In [48]: def foo1(K):
...: x = np.zeros(0,int)
...: for i in range(K):
...: y = get_list_of_numbers()
...: x = np.concatenate((x, y), axis=0) ...: return x
In [51]: timeit foo1(1000).shape
100 loops, best of 3: 15.9 ms per loop