Aquí está el código que uso para convertir una matriz en ráster gdal guardándolo en el disco, "param" es un diccionario que contiene parámetros gdal (consulte la documentación de gdal) y "array" es una matriz numpy. Luego puede crear una instancia de QgsMapLayer con su archivo como fuente. Tienes que crear el geotiff en el disco.
from osgeo import gdal as osgdal # Adapt the import to fit yor environement.
driver = osgdal.GetDriverByName(param['out_format'])
dataset = driver.Create(
param['dst_filename'],
param['x_pixels'],
param['y_pixels'],
1,
osgdal.GDT_Float32,
)
dataset.SetGeoTransform((
param['xmin'], #0
param['pixel_size'], #1
0, #2
param['ymin'], #3
0, #4
param['pixel_size'])) #5
out_srs = osr.SpatialReference()
out_srs.ImportFromEPSG(param['SRID'])
dataset.SetProjection(out_srs.ExportToWkt())
dataset.GetRasterBand(1).WriteArray(array.T) # Remove "T" if it's inverted.
dataset = None