A Wednesday 19 January 2011 22:38:46 Han Genuit escrigué:
> Hey Francesc,
> 
> Congrats, multidim support!

Thanks!

> I had a few short questions about the carray;
> 
> - Are you planning to implement operator overloading for carrays?
>   For example, a<10 gives a boolean array for numpy, but gives False
>   in the case of a carray, but ca.eval('a<10') works also for
> carrays.

Yeah, this should be nice.  However, it is not among my priorities right 
now.

> - Is there a reason why multidimensional slicing is not supported?
>   Stuff like a[:,2] is very nice imo.. [r[2] for r in a] builds a
> list, and is a lot slower than the np variant..

Well, I'm thinking about it because it should be feasible to implement 
a[:,2].  But I'm a bit reluctant because what I've actually implemented 
are multidimensional dtypes, not fully multidimensional carrays.  The 
difference is somewhat subtle.  For example, NumPy does not allow to 
have arrays with multidimensional dtypes:

>>> import numpy as np
>>> np.zeros(5, dtype="(2,)i4").dtype
dtype('int32')   # where is the (2,) dimension?
>>> np.zeros(5, dtype="(2,)i4").shape
(5, 2)    # it is appended to shape

>>> import carray as ca
>>> ca.zeros(5, dtype="(2,)i4").dtype
dtype(('int32',(2,)))  # the shape of dtype is kept
>>> ca.zeros(5, dtype="(2,)i4").shape
(5,)  # shape only contains the leading dimension
# ... shape trailing dimensions are added to dtype:
>>> ca.zeros((5,2), dtype="(2,)i4").dtype
dtype(('int32',(2, 2)))

So, carray goes the opposite path than NumPy: instead of transferring 
dimensions from dtype to shape, it transfers dims from shape to dtype.  
I've chosen this way mainly for simplicity reasons (mixing 
multidimensionality and chunking is not an easy thing).

The idea is that the carray package should be seen as a way to deal with 
observations, not as a general replacement for NumPy.  And observations 
are normally made of large collections of items, where each item can be 
made of a number of fields.  What I'm allowing in 0.3.1 is that these 
fields can be multidimensional objects.

> - Is that also the reason why the shape information resides partly
>   in the dtype? Problem is that if you do:
>   b = ca.arange(9).reshape((3,3))
>   Then b.shape is (3,), which is not (3,3)..
>   The same issue with the dtype, which is not comparable to the
> original, e.g. not atomic..

Hope that I've answered this above :)

Cheers!

-- 
Francesc Alted

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Pytables-users mailing list
Pytables-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pytables-users

Reply via email to