[Numpy-discussion] Detect if array has been transposed

Pauli Virtanen pav at iki.fi
Sun Oct 12 19:07:40 EDT 2014


12.10.2014, 22:16, Eric Firing kirjoitti:
> On 2014/10/12, 8:29 AM, Pauli Virtanen wrote:
>> 12.10.2014, 20:19, Mads Ipsen kirjoitti:
>>> Is there any way for me to detect (on the Python side) that transpose()
>>> has been invoked on the matrix, and thereby only do the copy operation
>>> when it really is needed?
>>
>> The correct way to do this is to, either:
>>
>> In your C code check PyArray_IS_C_CONTIGUOUS(obj) and raise an error if
>> it is not. In addition, on the Python side, check for
>> `a.flags.c_contiguous` and make a copy if it is not.
>>
>> OR
>>
>> In your C code, get an handle to the array using PyArray_FromANY (or
>> PyArray_FromOTF) with NPY_ARRAY_C_CONTIGUOUS requirement set so that it
>> makes a copy when necessary.
> 
> or let numpy handle it on the python side:
> 
> foo(numpy.ascontiguousarray(a))

Yes, but the C code really should check that the input array is
C-contiguous, if it only works for C-contiguous inputs.

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list