Skip to content

Commit

Permalink
constant
Browse files Browse the repository at this point in the history
  • Loading branch information
mgraffg committed Apr 23, 2017
1 parent 0b86e75 commit af8582d
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 3 deletions.
2 changes: 1 addition & 1 deletion SparseArray/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@

from .sparse_array import SparseArray
__all__ = ["SparseArray"]
__version__ = '0.8.12'
__version__ = '0.8.13'
15 changes: 15 additions & 0 deletions SparseArray/sparse_array.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,21 @@ cdef class SparseArray:
r.data = array.array('d', [x[1] for x in index_data])
r.non_zero = len(index_data)
return r

@classmethod
def constant(cls, value, index, size):
cdef SparseArray r = cls()
cdef double *data_value
cdef Py_ssize_t i, index_size = len(index)
r._len = size
r.non_zero = index_size
r.index = array.array('I', index)
r.data = array.clone(r.data, index_size, zero=False)
data_value = r.data.data.as_doubles
for i in range(index_size):
data_value[i] = value
return r


@property
def density(self):
Expand Down
12 changes: 11 additions & 1 deletion SparseArray/tests/test_sparse_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -610,4 +610,14 @@ def test_argmin():
sp_res = SparseArray.argmin([a, b, c])
[assert_almost_equals(x, y) for x, y in zip(res, sp_res.full_array())]



def test_constant():
index = [x for x in range(0, 100, 10)]
a = SparseArray.constant(-2.3, index, 100)
for v, w in zip(a.index, index):
assert_almost_equals(v, w)
for v in a.data:
assert_almost_equals(v, -2.3)
assert len(a) == 100
assert a.non_zero == 10

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.8.12
0.8.13

0 comments on commit af8582d

Please sign in to comment.