For Programmers: Free Programming Magazines  


Home > Archive > APL > December 2007 > A vector to an array









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author A vector to an array
Lance

2007-12-17, 6:59 pm

Say you have a 100 element vector. You want to take that vector and
duplicate it, say 20 times such that you get a 100 20 matrix where all
20 columns are identical. I know that you can just do:

{transpose}20 100{rho}vector.

I'm looking for other ways to accomplish the same thing in APL. Can
you use an outer product or some other form of assignment?

Thanks,
Lance
Phil Last

2007-12-17, 6:59 pm

On Dec 17, 4:53 pm, Lance <Lanc...@gmail.com> wrote:
> Say you have a 100 element vector. You want to take that vector and
> duplicate it, say 20 times such that you get a 100 20 matrix where all
> 20 columns are identical. I know that you can just do:
>
> {transpose}20 100{rho}vector.
>
> I'm looking for other ways to accomplish the same thing in APL. Can
> you use an outer product or some other form of assignment?
>
> Thanks,
> Lance


vector=E2=88=98.+20=E2=8D=B40 =E2=8D=9D if it's numeric but don't bank on t=
he efficiency!
aleph0

2007-12-17, 6:59 pm

Try ...

20/[1],[.1]VEC

This will replicate the first dimension 20 times to give you RHO = 20
100


20/,[1.1]VEC

This will replicate the second dimension 20 times to give you RHO =
100 20




On Dec 17, 5:53 pm, Lance <Lanc...@gmail.com> wrote:
> Say you have a 100 element vector. You want to take that vector and
> duplicate it, say 20 times such that you get a 100 20 matrix where all
> 20 columns are identical. I know that you can just do:
>
> {transpose}20 100{rho}vector.
>
> I'm looking for other ways to accomplish the same thing in APL. Can
> you use an outer product or some other form of assignment?
>
> Thanks,
> Lance


Phil Last

2007-12-17, 6:59 pm

On Dec 17, 5:20 pm, Phil Last <phil.l...@ntlworld.com> wrote:
> On Dec 17, 4:53 pm, Lance <Lanc...@gmail.com> wrote:
>
>
>
>
>
> vector=E2=88=98.+20=E2=8D=B40 =E2=8D=9D if it's numeric but don't bank on=

the efficiency!

vector=E2=88=98.{=E2=8D=BA}20=E2=8D=B40 =E2=8D=9D in Dyalog but with the sa=
me caution
aleph0

2007-12-17, 6:59 pm

>
> vector=E2=88=98.{=E2=8D=BA}20=E2=8D=B40 =C2=A0=E2=8D=9D in Dyalog but with=

the same caution


Yep ..

A) VERY VERY slow compared the simple solution posted earlier
B) WS problems are imminent on larger "vector"s

;-)
Ted Edwards

2007-12-17, 6:59 pm

Lance wrote:
> Say you have a 100 element vector. You want to take that vector and
> duplicate it, say 20 times such that you get a 100 20 matrix where all
> 20 columns are identical. I know that you can just do:
>
> {transpose}20 100{rho}vector.
>
> I'm looking for other ways to accomplish the same thing in APL. Can
> you use an outer product or some other form of assignment?


Vn{<-}{iota}1E4
Vc{<-}1E4{rho}'abc'

Left argument of TIMER repeats test L times and divides total by L
100 TIMER'Vn{nul}.+20{rho}0' {@} for numeric Vn
0.00373
100 TIMER'{transpose}20 1E4{rho}Vc' {@} for character Vc
0.00045

for any V
10 TIMER'20/,[{iota}0]Vn'
0.0162
10 TIMER'20/,[{iota}0]Vc'
0.016
or
10 TIMER'{disclose}[1]20{rho}{enclose}Vn'
0.0182
10 TIMER'{disclose}[1]20{rho}{enclose}Vc'
0.0193

Ted
Lance

2007-12-18, 6:58 pm

On Dec 17, 11:22 am, aleph0 <apl68...@tiscali.co.uk> wrote:
> Try ...
>
> 20/[1],[.1]VEC
>
> This will replicate the first dimension 20 times to give you RHO = 20
> 100
>
> 20/,[1.1]VEC
>
> This will replicate the second dimension 20 times to give you RHO =
> 100 20
>
> On Dec 17, 5:53 pm, Lance <Lanc...@gmail.com> wrote:
>

Thanks. I've now learned about ravel with axis.

Lance
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com