[pypy-commit] pypy numpy-identity: Added numpy.identity function
jterrace
noreply at buildbot.pypy.org
Tue Dec 13 23:15:53 CET 2011
Author: Jeff Terrace <jterrace at gmail.com>
Branch: numpy-identity
Changeset: r50482:2ff54fec76e7
Date: 2011-12-13 17:15 -0500
http://bitbucket.org/pypy/pypy/changeset/2ff54fec76e7/
Log: Added numpy.identity function
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
@@ -81,6 +81,7 @@
'mean': 'app_numpy.mean',
'sum': 'app_numpy.sum',
'min': 'app_numpy.min',
+ 'identity': 'app_numpy.identity',
'max': 'app_numpy.max',
'inf': 'app_numpy.inf',
'e': 'app_numpy.e',
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
@@ -13,6 +13,11 @@
# weighting, just the average part!
return mean(a)
+def identity(n, dtype=None):
+ a = numpypy.zeros((n,n), dtype=dtype)
+ for i in range(n):
+ a[i][i] = 1
+ return a
def mean(a):
if not hasattr(a, "mean"):
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
@@ -722,6 +722,37 @@
a = array([True] * 5, bool)
assert a.sum() == 5
+ def test_identity(self):
+ from numpypy import identity, array
+ from numpypy import int32, float64
+ a = identity(0)
+ assert len(a) == 0
+ assert repr(a.dtype) == "dtype('float64')"
+ assert a.shape == (0,0)
+ b = identity(1, dtype=int32)
+ assert len(b) == 1
+ assert b[0][0] == 1
+ assert b.shape == (1,1)
+ assert repr(b.dtype) == "dtype('int32')"
+ c = identity(2)
+ assert c.shape == (2,2)
+ assert c[0][0] == 1.0
+ assert c[0][1] == 0.0
+ assert c[1][0] == 0.0
+ assert c[1][1] == 1.0
+ d = identity(3, dtype='int32')
+ assert d.shape == (3,3)
+ assert repr(d.dtype) == "dtype('int32')"
+ assert d[0][0] == 1.0
+ assert d[0][1] == 0.0
+ assert d[0][2] == 0.0
+ assert d[1][0] == 0.0
+ assert d[1][1] == 1.0
+ assert d[1][2] == 0.0
+ assert d[2][0] == 0.0
+ assert d[2][1] == 0.0
+ assert d[2][2] == 1.0
+
def test_prod(self):
from numpypy import array
a = array(range(1, 6))
More information about the pypy-commit
mailing list