[pypy-commit] pypy matrixmath: test, implelent arange
mattip
noreply at buildbot.pypy.org
Fri Nov 25 08:35:08 CET 2011
Author: mattip
Branch: matrixmath
Changeset: r49778:d306832a1934
Date: 2011-11-25 09:25 +0200
http://bitbucket.org/pypy/pypy/changeset/d306832a1934/
Log: test, implelent arange
diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -57,4 +57,5 @@
'mean': 'app_numpy.mean',
'inf': 'app_numpy.inf',
'e': 'app_numpy.e',
+ 'arange': 'app_numpy.arange',
}
diff --git a/pypy/module/micronumpy/app_numpy.py b/pypy/module/micronumpy/app_numpy.py
--- a/pypy/module/micronumpy/app_numpy.py
+++ b/pypy/module/micronumpy/app_numpy.py
@@ -6,12 +6,35 @@
inf = float("inf")
e = math.e
+
def average(a):
# This implements a weighted average, for now we don't implement the
# weighting, just the average part!
return mean(a)
+
def mean(a):
if not hasattr(a, "mean"):
a = numpypy.array(a)
return a.mean()
+
+
+def arange(start, stop=None, step=1, dtype=None, maskna=False):
+ '''arange([start], stop[, step], dtype=None, maskna=False)
+ Generate values in the half-interval [start, stop).
+ '''
+ if stop is None:
+ stop = start
+ start = 0
+ if maskna is not False:
+ raise ValueError('Not Implemented')
+ if dtype is None:
+ test = numpypy.array([start, stop, step])
+ dtype = test.dtype
+ arr = numpypy.zeros(int(math.ceil((stop - start) / step)), dtype=dtype)
+ i = start
+ for j in range(arr.size):
+ arr[j] = i
+ j += 1
+ i += step
+ return arr
diff --git a/pypy/module/micronumpy/test/test_numarray.py b/pypy/module/micronumpy/test/test_numarray.py
--- a/pypy/module/micronumpy/test/test_numarray.py
+++ b/pypy/module/micronumpy/test/test_numarray.py
@@ -1041,3 +1041,19 @@
assert str(b) == "[7 8 9]"
b = a[2:1, ]
assert str(b) == "[]"
+
+
+class AppTestRanges(BaseNumpyAppTest):
+ def test_arange(self):
+ from numpypy import arange, array, dtype
+ a = arange(3)
+ assert (a == [0, 1, 2]).all()
+ assert a.dtype is dtype(int)
+ a = arange(3.0)
+ assert (a == [0., 1., 2.]).all()
+ assert a.dtype is dtype(float)
+ a = arange(3, 7)
+ assert (a == [3, 4, 5, 6]).all()
+ assert a.dtype is dtype(int)
+ a = arange(3, 7, 2)
+ assert (a == [3, 5]).all()
More information about the pypy-commit
mailing list