> The fact that Nifti1Image cannot contain boolean arrays is really annoying.

It's the nifti standard that wants this.

> Several calls to astype() can't be avoided for this reason, which
> incurs a copy each time.

Technically, if you can store int8 in Niftis, you don't need a memory
copy:

<pre>
In [4]: a = np.ones(10, dtype=np.int8)

In [6]: b = a.view(np.bool)

In [7]: b.shape
Out[7]: (10,)

In [8]: np.may_share_memory(a, b)
Out[8]: True
</pre>