[Numpy-discussion] C-extension -- how do I accept a vector of both type double and type int?

Robert Kern robert.kern at gmail.com
Thu Jul 26 18:43:57 EDT 2007

Geoffrey Zhu wrote:
> On 7/26/07, Robert Kern <robert.kern at gmail.com> wrote:
>> Geoffrey Zhu wrote:
>>> Hi Everyone,
>>> I finally build a C extension. The one problem I found is that it is
>>> too picky about the input. For example, it accepts
>>> array([1.0,2.0,3.0]) with no problem, but when I pass in
>>> array([1,2,3]), since the dtype of the array is now int, my extension
>>> does not like it.
>> Okay. Show us the code that you are using, and we can help you find a better way.
>>> How do I handle this situation? Is there any way to access any data
>>> type that can be converted into a double?
>> I usually use PyArray_FROM_OTF(). That handles the usual cases. It's pretty much
>> like starting off a pure Python function with asarray(x, dtype=whatever).
> That is going to make a copy of the memory every time and might slow
> down things a lot?

Not if you pass it an array with the requested properties.

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