def func(s, i, d): layout = PackedTable(shape, vertex=vertex, center=center, selection=s, ordering=i) packed = layout.pack(d) assert_equal(packed.shape, (len(layout),) + d.shape[2:]) d_ = layout.unpack(packed) assert_equal(d_.shape, d.shape) assert np.all((d == d_) | missing(d_)) out_packed = np.empty((len(layout),) + d.shape[2:], d.dtype).view(type(d)) out_unpacked = np.empty(d.shape, d.dtype).view(type(d)) layout.pack(d, out=out_packed) layout.unpack(out_packed, out=out_unpacked) assert np.all((d == out_unpacked) | missing(out_unpacked)) out_unpacked = np.empty((6,)+d.shape[1:], d.dtype)[::2].view(type(d)) out_packed = np.empty((out_packed.shape[0]*2,)+out_packed.shape[1:], d.dtype)[::2].view(type(d)) layout.pack(d, out=out_packed) layout.unpack(out_packed, out=out_unpacked) assert np.all((d == out_unpacked) | missing(out_unpacked))
def func(n, s, m): if s is not Ellipsis: tmp = np.ones(n, bool) tmp[s] = False s = tmp layout = PackedTable(n, selection=s, val=np.arange(n)*2.) slices = layout.split(m) assert_eq(len(slices), m) o = np.zeros(layout.shape, int) v = np.full(layout.shape, np.nan) for s in slices: o[s._index] += 1 v[s._index] = s.val o[o == 0] = -1 assert_same(o, layout.unpack(1)) assert_same(v, layout.all.val) assert_same(np.concatenate([_.val for _ in slices]), layout.val)
def test_pack_none(): layout = PackedTable((3, 3)) assert_is_none(layout.pack(None)) assert_is_none(layout.unpack(None))