简体   繁体   English

在循环中将所有 numpy arrays 写入二进制文件

[英]Write all numpy arrays to binary file in a loop

I have this code:我有这个代码:

from osgeo import gdal
import numpy as np


ds = gdal.Open('image.tif')
# loop through each band
for bi in range(ds.RasterCount):
    band = ds.GetRasterBand(bi + 1)
    # Read this band into a 2D NumPy array
    ar = band.ReadAsArray()
    print('Band %d has type %s'%(bi + 1, ar.dtype))   
    
    ar.astype('uint16').tofile("converted.raw")

As a result, I get the converted.raw file, but it only contains data from the last iteration of the for loop.结果,我得到了 convert.raw 文件,但它只包含来自 for 循环最后一次迭代的数据。 How to make a file that will contain data from all iterations together.如何制作一个包含所有迭代数据的文件。

Use np.save使用np.save

Ex:前任:

ds = gdal.Open('image.tif')
# loop through each band

with open("converted.raw", "wb") as outfile:
    for bi in range(ds.RasterCount):
        band = ds.GetRasterBand(bi + 1)
        # Read this band into a 2D NumPy array
        ar = band.ReadAsArray()
        print('Band %d has type %s'%(bi + 1, ar.dtype))   
        np.save(outfile, ar.astype('uint16'))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM