Author: Alex Gaynor <[email protected]>
Branch:
Changeset: r44982:0ab53e4999f9
Date: 2011-06-16 19:16 -0700
http://bitbucket.org/pypy/pypy/changeset/0ab53e4999f9/
Log: Added numpy.ones
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
@@ -9,6 +9,7 @@
'array': 'interp_numarray.SingleDimArray',
'zeros': 'interp_numarray.zeros',
'empty': 'interp_numarray.zeros',
+ 'ones': 'interp_numarray.ones',
# ufuncs
'abs': 'interp_ufuncs.absolute',
diff --git a/pypy/module/micronumpy/interp_numarray.py
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -197,6 +197,7 @@
Intermediate class for performing binary operations.
"""
_immutable_fields_ = ["function", "left", "right"]
+
def __init__(self, function, left, right, signature):
VirtualArray.__init__(self, signature)
self.function = function
@@ -220,9 +221,11 @@
class ViewArray(BaseArray):
"""
- Class for representing views of arrays, they will reflect changes of
parrent arrays. Example: slices
+ Class for representing views of arrays, they will reflect changes of parent
+ arrays. Example: slices
"""
_immutable_fields_ = ["parent"]
+
def __init__(self, parent, signature):
BaseArray.__init__(self)
self.signature = signature
@@ -230,7 +233,10 @@
self.invalidates = parent.invalidates
def get_concrete(self):
- return self # in fact, ViewArray never gets "concrete" as it never
stores data. This implementation is needed for BaseArray getitem/setitem to
work, can be refactored.
+ # in fact, ViewArray never gets "concrete" as it never stores data.
+ # This implementation is needed for BaseArray getitem/setitem to work,
+ # can be refactored.
+ return self
def eval(self, i):
return self.parent.eval(self.calc_index(i))
@@ -320,10 +326,16 @@
i += 1
return space.wrap(arr)
-@unwrap_spec(ObjSpace, int)
+@unwrap_spec(size=int)
def zeros(space, size):
return space.wrap(SingleDimArray(size))
+@unwrap_spec(size=int)
+def ones(space, size):
+ arr = SingleDimArray(size)
+ for i in xrange(size):
+ arr.storage[i] = 1.0
+ return space.wrap(arr)
BaseArray.typedef = TypeDef(
'numarray',
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
@@ -28,6 +28,15 @@
a[1] = 1.0
assert a[1] == 1.0
+ def test_ones(self):
+ from numpy import ones
+ a = ones(3)
+ assert len(a) == 3
+ assert a[0] == 1
+ raises(IndexError, "a[3]")
+ a[2] = 4
+ assert a[2] == 4
+
def test_iterator_init(self):
from numpy import array
a = array(range(5))
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit