Don't use SWIG. As someone with 15 years of SWIG experience maintaining the GDAL and MapServer bindings, don't use SWIG. If you must, hand roll some bindings with Cython or ctypes. Exposure of all of LASlib would require a lot of effort, however.
There is a branch that I wrote for both laspy
https://github.com/laspy/laspy/commits/lazperf-decomp and laz-perf
https://github.com/hobu/laz-perf that allows in-memory decompression of LAZ data. It is really rough, but it is one way to a (almost) pure Python LAZ experience. Some investment would be required to get this smooth, however.
PDAL also has an excellent Python story
https://www.pdal.io/python.html and it is the easiest way to get from LAZ -> NumPy arrays at the moment. PDAL allows you to embed Python scripts as part of a processing chain (embed), and it allows you to invoke a processing chain and grab its results as a NumPy array (extension). The embed part is available through the OSGeo4W64 packaging system on Windows, and if there is interest, I could push up the extension for that distribution as well. It should all Just Work™ on Linux or OSX. See one of the PDAL Workshop examples for some ideas on how it can be used
https://www.pdal.io/workshop/exercises/python/histogram.html
Howard