I believe `tri(foo).T` will be faster than `tri(foo) == 0` as a transpose is a stride trick and doesn't need to walk the data.