Author: mattip <[email protected]>
Branch:
Changeset: r82368:85f5eef31a2a
Date: 2016-02-21 15:53 +0100
http://bitbucket.org/pypy/pypy/changeset/85f5eef31a2a/
Log: test, fix boolean array indexing, extending d77888929462
diff --git a/pypy/module/micronumpy/compile.py
b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -196,6 +196,10 @@
def newfloat(self, f):
return self.float(f)
+ def newslice(self, start, stop, step):
+ return SliceObject(self.int_w(start), self.int_w(stop),
+ self.int_w(step))
+
def le(self, w_obj1, w_obj2):
assert isinstance(w_obj1, boxes.W_GenericBox)
assert isinstance(w_obj2, boxes.W_GenericBox)
diff --git a/pypy/module/micronumpy/strides.py
b/pypy/module/micronumpy/strides.py
--- a/pypy/module/micronumpy/strides.py
+++ b/pypy/module/micronumpy/strides.py
@@ -94,11 +94,13 @@
dim = i
break
if dim >= 0:
- # filter by axis r
- filtr = chunks.pop(dim)
+ # filter by axis dim
+ filtr = chunks[dim]
assert isinstance(filtr, BooleanChunk)
w_arr = w_arr.getitem_filter(space, filtr.w_idx, axis=dim)
arr = w_arr.implementation
+ chunks[dim] = SliceChunk(space.newslice(space.wrap(0),
+ space.wrap(-1), space.w_None))
r = calculate_slice_strides(space, arr.shape, arr.start,
arr.get_strides(), arr.get_backstrides(), chunks)
else:
diff --git a/pypy/module/micronumpy/test/test_ndarray.py
b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -2550,6 +2550,8 @@
assert b.base is None
b = a[:, np.array([True, False, True])]
assert b.base is not None
+ b = a[np.array([True, False]), 0]
+ assert (b ==[0]).all()
def test_scalar_indexing(self):
import numpy as np
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit