[Numpy-discussion] On my Cython/NumPy project
Dag Sverre Seljebotn
dagss@student.matnat.uio...
Sat Jun 21 13:55:54 CDT 2008
Matthew Brett wrote:
> Hi,
>
> Thanks a lot for the email - it's an exciting project.
>
>> cdef int i = 4, j = 6
>> cdef np.ndarray[np.float64, 2] arr = np.zeros((10, 10),
>> dtype=np.float64)
>> arr[i, j] = 1
>
> I'm afraid I'm going to pitch into an area I'm ignorant of, and I'm
> sorry for that, but do you think there is any way of allowing fast
> indexing and operations on arrays that do not have their type declared
> at compile time?
Well... the Cython compiler definitely needs to know about which type it
is -- the array simply has a byte buffer, and one needs to know how to
interpret that (how many bytes per element etc.).
However, I could make it so that if you left out the type, it would be
auto-detected. I.e.:
cdef np.ndarray[2] arr = ...
cdef np.float64 x = arr[3,4]
However, if you then did something like this on a 32-bit-system:
cdef np.ndarray[2] arr = ...
print arr[3,4]
Then it would assume arr is an object, and if arr is really float64 you
would segfault.
So the real answer is: Yes, the type is needed.
Dag Sverre
More information about the Numpy-discussion
mailing list