[SciPy-user] the meaning of c_ and r_
Travis Oliphant
oliphant at ee.byu.edu
Fri Oct 22 15:07:53 CDT 2004
Robert Kern wrote:
> Gerald Richter wrote:
>
>> Hi everybody.
>>
>> Sorry for such a basic question, or maybe two:
>>
>> shouldn't c_[...] result in something like
>> array([ [ . ],
>> [ . ] ])
>> while r_ results in array([ ... ])
>> ?
>
>
> Probably. Travis will probably have to step in here and explain what
> they are supposed to do in this case.
>
>> why does:
>>
>> In [23]: a = r_[1:3:5j]
>>
>> In [24]: b = c_[2:6:5j]
>>
>> In [25]: b
>> Out[25]: array([ 2., 3., 4., 5., 6.])
>>
>> In [26]: a
>> Out[26]: array([ 1. , 1.5, 2. , 2.5, 3. ])
>>
>> In [27]: transpose a
>> -------> transpose(a)
>> Out[27]: array([ 1. , 1.5, 2. , 2.5, 3. ])
>>
>> In [28]: transpose b
>> -------> transpose(b)
>> Out[28]: array([ 2., 3., 4., 5., 6.])
>>
>> not allow transposition in the above mentioned way?
>
>
SciPy is early enough in it's development that the behavior of r_ and c_
could be changed without extensive grief at this point, if it was
important to change them.
The idea of r_ was to allow fast creation of arrays similar to what is
available with MATLAB. I wanted a short, quick way to concatenate and
generate arrays. For 1-d arrays, r_ and c_ are supposed to be exactly
the same. It's only when you give them two dimensional arrays that they
differ. Admittedly, I really like the one-dimensional array creation
ability of r_ and I use it quite often. The two-dimensional array
creation is not as good. bmat is intended to improve that some. I am
open to any ideas about how to improve this. Perhaps, we just kill c_
and suggest something else (like an improved bmat) for building 2-d
arrays quickly.
But, your transpose question is resolved by recognizing that there is a
difference between a rank-1 array and a rank-2 matrix (which can be a
column or row). Perhaps we should have a mechanism (perhaps a
row_[...]) that generates a rank-2 row vector very quickly.
Ideas are welcome,
-Travis
More information about the SciPy-user
mailing list