def __zero_block_outside_irs(self, r, other_intrangeset): my_intrangeset = IntRangeSet(r) intersection_intrangeset = my_intrangeset & other_intrangeset if intersection_intrangeset.isempty: del self.ranges_to_arrays[r] else: mask = np.zeros(len(my_intrangeset), dtype=bool) for s in intersection_intrangeset.ranges(): start = my_intrangeset.index(s[0]) end = start + s[1] - s[0] mask[start:end] = True self.ranges_to_arrays[r][~mask] = 0 self.ranges_to_arrays[r].T[~mask] = 0 # for compatibility with 1d arrays