Author: Brian Kearns <[email protected]>
Branch:
Changeset: r68384:3fca57d5b11e
Date: 2013-12-05 19:26 -0500
http://bitbucket.org/pypy/pypy/changeset/3fca57d5b11e/
Log: fix axis reduce on numpy arrays with zero shape (issue1650)
diff --git a/pypy/module/micronumpy/loop.py b/pypy/module/micronumpy/loop.py
--- a/pypy/module/micronumpy/loop.py
+++ b/pypy/module/micronumpy/loop.py
@@ -238,13 +238,16 @@
while not out_iter.done():
axis_reduce__driver.jit_merge_point(shapelen=shapelen, func=func,
dtype=dtype)
- w_val = arr_iter.getitem().convert_to(dtype)
- if out_iter.first_line:
- if identity is not None:
- w_val = func(dtype, identity, w_val)
+ if arr_iter.done():
+ w_val = identity
else:
- cur = temp_iter.getitem()
- w_val = func(dtype, cur, w_val)
+ w_val = arr_iter.getitem().convert_to(dtype)
+ if out_iter.first_line:
+ if identity is not None:
+ w_val = func(dtype, identity, w_val)
+ else:
+ cur = temp_iter.getitem()
+ w_val = func(dtype, cur, w_val)
out_iter.setitem(w_val)
if cumulative:
temp_iter.setitem(w_val)
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
@@ -1300,6 +1300,8 @@
assert a.sum() == 105
assert a.max() == 14
assert array([]).sum() == 0.0
+ assert array([]).reshape(0, 2).sum() == 0.
+ assert (array([]).reshape(0, 2).sum(0) == [0., 0.]).all()
raises(ValueError, 'array([]).max()')
assert (a.sum(0) == [30, 35, 40]).all()
assert (a.sum(axis=0) == [30, 35, 40]).all()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit