[pypy-dev] partition in numpypy
Matti Picus
matti.picus at gmail.com
Sat Jan 23 14:16:04 EST 2016
On 23/01/2016 6:24 PM, Sergey Matyunin wrote:
> Hello.
>
> Need a little help with numpypy. I want to implement partition method
> for numpy array. Let's say I can compile npy_partition.h.src, import
> it through CFFI. Therefore I can write a python function
> my_partition(numpy_array, other_arguments...) that performs
> partitioning for a give numpy array.
>
> Now I want to create partition method for ndarray.
> As far as I understand methods of ndarray are defined in
> pypy/module/micronumpy/ndarray.py in a special way and
> ndarray.partition = my_partition doesn't work.
>
> Is it possible to add method to ndarray inside numpypy, not inside
> pypy's micronumpy module?
Thanks for picking this up. I would suggest you first play around
with implementing partition in cffi, it may take a while to get the
interface
just right and you may decide that this implementation design is too
unwieldy.
Here is how I would add the app level function to ndarray, similar to
the tactic
taken for set_string_function and ndarray.__repre__
- create a function in module/micronumpy/appbridge.py that accepts
your partition function and stores it in a cache.
- Exposed this new function in _numpypy by adding it to
module/micronumpy/__init__.py.
- create a default descr_partition() function in
module/micronumpy/ndarray.py
that raises a w_NotImplementedError if the cache entry is empty
(see descr_repr for an example of how to use the cache function if it
has been
assigned)
- Add the call to your new function in step 1 into numpy/core/multiarray.py,
which is only used in pypy (multiarray is a compiled extension module in
cpython)
Matti
More information about the pypy-dev
mailing list