Author: mattip <[email protected]>
Branch:
Changeset: r82812:d56d7d90a811
Date: 2016-03-06 16:33 +0200
http://bitbucket.org/pypy/pypy/changeset/d56d7d90a811/
Log: merge numpy_partition which provides an app-level cffi
implementation of partition()
diff --git a/pypy/module/micronumpy/appbridge.py
b/pypy/module/micronumpy/appbridge.py
--- a/pypy/module/micronumpy/appbridge.py
+++ b/pypy/module/micronumpy/appbridge.py
@@ -9,6 +9,7 @@
w_array_repr = None
w_array_str = None
w__usefields = None
+ w_partition = None
def __init__(self, space):
pass
diff --git a/pypy/module/micronumpy/ndarray.py
b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -557,8 +557,12 @@
return self.get_scalar_value().item(space)
l_w = []
for i in range(self.get_shape()[0]):
- l_w.append(space.call_method(self.descr_getitem(space,
- space.wrap(i)), "tolist"))
+ item_w = self.descr_getitem(space, space.wrap(i))
+ if (isinstance(item_w, W_NDimArray) or
+ isinstance(item_w, boxes.W_GenericBox)):
+ l_w.append(space.call_method(item_w, "tolist"))
+ else:
+ l_w.append(item_w)
return space.newlist(l_w)
def descr_ravel(self, space, w_order=None):
@@ -934,6 +938,10 @@
return
return self.implementation.sort(space, w_axis, w_order)
+ def descr_partition(self, space, __args__):
+ return get_appbridge_cache(space).call_method(
+ space, 'numpy.core._partition_use', 'partition',
__args__.prepend(self))
+
def descr_squeeze(self, space, w_axis=None):
cur_shape = self.get_shape()
if not space.is_none(w_axis):
@@ -1658,6 +1666,7 @@
argsort = interp2app(W_NDimArray.descr_argsort),
sort = interp2app(W_NDimArray.descr_sort),
+ partition = interp2app(W_NDimArray.descr_partition),
astype = interp2app(W_NDimArray.descr_astype),
base = GetSetProperty(W_NDimArray.descr_get_base),
byteswap = interp2app(W_NDimArray.descr_byteswap),
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
@@ -1936,6 +1936,22 @@
a = array([[1, 2], [3, 4]])
assert (a + a).tolist() == [[2, 4], [6, 8]]
+ def test_tolist_object(self):
+ from numpy import array
+ a = array([0], dtype=object)
+ assert a.tolist() == [0]
+
+ def test_tolist_object_slice(self):
+ from numpy import array
+ list_expected = [slice(0, 1), 0]
+ a = array(list_expected, dtype=object)
+ assert a.tolist() == list_expected
+
+ def test_tolist_object_slice_2d(self):
+ from numpy import array
+ a = array([(slice(0, 1), 1), (0, 1)], dtype=object)
+ assert a.tolist() == [[slice(0, 1, None), 1], [0, 1]]
+
def test_tolist_slice(self):
from numpy import array
a = array([[17.1, 27.2], [40.3, 50.3]])
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit