How to render voxels?
While there are several file formats used for voxel data, they are used for volumetric data, such as smoke and fluid, which I doubt will help you.

As you have the data in numpy, I would suggest letting numpy save the data to file using numpy.save, but if you are using numpy to generate the data you can use numpy in blender and not use a file format at all.

By creating your selection of block types, you can then use a script to duplicate a block into each position.

import bpy
import numpy as np

objs = bpy.data.objects
scn = bpy.context.scene

scene_objs = [
        objs['sand'],
        objs['grass'],
        objs['water'],
        ]

voxel_data = np.array([
        [1, 1, 1, 1, 1, 1, 1],
        [1, 0, 0, 0, 0, 0, 1],
        [1, 0, 2, 0, 2, 0, 1],
        [1, 0, 2, 0, 2, 0, 1],
        [1, 1, 0, 1, 0, 1, 1],
        [1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1],
        ])

for x in range(voxel_data.shape[0]):
    for y in range(voxel_data.shape[1]):
        obj = scene_objs[voxel_data[x,y]].copy()
        scn.objects.link(obj)
        obj.location = (x*2.1, y*2.1, 0)