def test_setslice(): s = SparseArray(100, 0) s[1] = 2 s[99] = 2 s[5:8] = 3 assert len(s.container) == 5 assert s.keys() == [1, 5, 6, 7, 99] assert s.values() == [2, 3, 3, 3, 2] s = SparseArray(100, 0) s[1] = 2 s[99] = 2 s[5:8] = [3,3,3] assert len(s.container) == 5 assert s.keys() == [1, 5, 6, 7, 99] assert s.values() == [2, 3, 3, 3, 2] s = SparseArray(100, 0) t = SparseArray(100,0) t[5:10] = 1 s[5:10] = t[5:10] assert len(t.container) == 5 assert t.values() == [1]*5 assert t.keys() == [5, 6, 7, 8, 9] s = SparseArray(10, 0) s[2:5] = SparseArray.from_dense([1]*10, 0)[2:5] assert s.tolist() == [0,0,1,1,1,0,0,0,0,0] s = SparseArray(100,0) t = SparseArray(100,0) t[20:50] = 1 s[20:50] = t[20:50] assert all(sv == 1 for sv in s[20:50].tolist())
def test_staticbuilders(): a = SparseArray.from_dense([0, 1, 1, 0, 0, 1], 0) assert type(a) is SparseArray assert a.tolist() == [0, 1, 1, 0, 0, 1] assert a.size == 6 npa = np.array([0, 1, 1, 0, 0, 1], dtype=np.int8) assert type(a) is SparseArray assert a.tolist() == [0, 1, 1, 0, 0, 1] assert a.size == 6 a = SparseArray.from_items([(0,1), (2,1), (4,1)], 5, 0) assert type(a) is SparseArray assert a.tolist() == [1,0,1,0,1] assert a.size == 5
def __init__(self, data=None, refcode=0, missingcode=-1, size=None, template=None): self.template = template self.refcode = refcode if data is None: if template is None and size is None: raise ValueError('No template or size') elif template is not None and size is None: size = self.template.nmark() self.container = SparseArray(size, refcode) return if type(data) is SparseArray: raise NotImplementedError else: if not isinstance(data, np.ndarray): data = np.array(data) self.container = SparseArray.from_dense(data, refcode) self.size = len(self.container)