[Numpy-discussion] performing operations in-place in numpy
Robert Kern
robert.kern at gmail.com
Thu Jul 9 11:41:38 EDT 2009
On Thu, Jul 9, 2009 at 04:35, Pauli Virtanen<pav at iki.fi> wrote:
> Thu, 09 Jul 2009 10:03:47 +0100, Citi, Luca kirjoitti:
> [clip]
>> Excuse me if I insist, PyArray_Conjugate is not the problem. If when
>> using the numpy API, it is accepted something like:
>>
>> obj1 = PyArray_CreateSomehowAnArray(....);
>> obj2 = PyArray_DoSomethingWithArray(obj1,...);
>> obj3 = PyArray_DoSomethingElseWithArray(obj1,...);
>> Py_DECREF(obj1);
>>
>> then there is no way my patch is guaranteed to not break things.
>
> So it seems.
>
> PyUFunc_GenericFunction is a part of the public C-API, so I guess this
> discussion is moot. I doubt we can change ufunc semantics at this point,
> and I don't see ways in which one could distinguish between "temporary
> arrays" and refcount-1 arrays used in extension modules.
We could change ufunc_generic_call() (i.e. the C implementation of
ufunc.__call__) to use a new function like PyUFunc_GenericFunction
except with the refcount-1 semantics. This allows old C-level to
remain unchanged but let Python expressions have the optimized
semantics.
Is there a hole in my reasoning?
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
-- Umberto Eco
More information about the NumPy-Discussion
mailing list