我正在寻找附加从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。任何想法都将不胜感激。
答案 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