This is an alternative version of gdal_calc that allows better handling of nodata and 15-30% faster runtimes. Minimal changes to source code. It has been submitted for inclusion in the trunk GDAL distribution via trac, but it may take a long time to show up. You can use it from here in the meantime if you like.
This is a drop-in replacement for the 'select' function in numpy. It has been reimplemented to fix long-standing bugs, improve speed substantially in all use cases, and improve internal documentation. It now supports broadcasting. It also performs some extra validation of input.