Numpy方法附加从for循环中检索的数据

时间:2014-02-15 02:19:54

标签: python numpy

我正在寻找附加从for循环检索的数据的numpy方法,如下例所示:

import glob, gdal, numpy as np

tiff_files = glob.glob('*.tif')

all_data = []   #LOOKING FOR ALTERNATIVE HERE
for f in tiff_files:
    data_open = gdal.Open(f)
    data_array = data_open.ReadAsArray().astype(np.float32)
    all_data.append(data_array)  # #LOOKING FOR ALTERNATIVE HERE

上面的代码可行,但最好将从for循环中检索到的data_array直接附加到numpy数组中,而不是使用python list。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果你想让它成为一个单行:

np.array([gdal.Open(f).ReadAsArray().astype(np.float32) for f in glob.glob('*.tif')])

但是在ndarray中创建数据并不比内置list快。 E.g:

In [391]: timeit a=[0]*1000
100000 loops, best of 3: 10.1 us per loop

In [392]: timeit a=np.array([0]*1000)
1000 loops, best of 3: 265 us per loop