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
|
|
|
| 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
| |
|
| 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
|
|
|
|
|