# [SciPy-user] the meaning of c_ and r_

Gerald Richter richter at hephy.oeaw.ac.at
Mon Oct 25 09:02:44 CDT 2004

```I find the idea to introduce something like row_ and col_ very
convenient. Given that it does:

row_[1:4:4j]
= array[ [ 1, 2, 3, 4 ] ]

col_[1:4:4j]
= array[  [ 1 ],
[ 2 ],
[ 3 ],
[ 4 ] ]

also, it seems reasonable, to provide something that does convert any 1-d
object to the desired columns or row-shape

a = ( 1,2,3)
row(a)
= array[ [ 1, 2, 3 ] ]

... similar for col()

+++

I played arround a little with the functionality of c_ and r_ to understand
it better... maybe these are examples to add to the documentation, so that
it becomes more clear what these functions do?

a = array([c_[1:4:4j]])
[ [ 1.  2.  3.  4.]]

at = transpose(a)
[[ 1.]
[ 2.]
[ 3.]
[ 4.]]

b = array([c_[5:8:4j]])
[ [ 5.  6.  7.  8.]]

bt = transpose(b)
[[ 5.]
[ 6.]
[ 7.]
[ 8.]]

c_[a,b]
[ [ 1.  2.  3.  4.  5.  6.  7.  8.]]

c_[at,bt]
[[ 1.  5.]
[ 2.  6.]
[ 3.  7.]
[ 4.  8.]]

r_[a,b]
[[ 1.  2.  3.  4.]
[ 5.  6.  7.  8.]]

r_[at,bt]
[[ 1.]
[ 2.]
[ 3.]
[ 4.]
[ 5.]
[ 6.]
[ 7.]
[ 8.]]

greetings,
Gerald

On Fri, Oct 22, 2004 at 02:07:53PM -0600, Travis Oliphant wrote:
> 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
>
>
>
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.net
> http://www.scipy.net/mailman/listinfo/scipy-user

```