<div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Lana,<div><br></div><div>The `reshape` operation in Accelerate just changes the extent of an array without changing the underlying data.</div><div><br></div><div>But, for example, the following will select only the the given (by index) rows of a matrix:</div><div><br></div><div><p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">selectRows :: Elt e => Acc (Vector Int) -> Acc (Matrix e) -> Acc (Matrix e)</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">selectRows rs xs =</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">  let Z :. rows = unlift (shape rs)</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">      cols      = indexHead (shape xs)</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">  in</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">  generate (index2 rows cols) (\ix -> let Z :. r :. c = unlift ix</span></p>
<p style="margin:0px;font-stretch:normal;font-size:13px;line-height:normal;font-family:Courier;color:rgb(14,14,14)"><span style="font-kerning:none">                                       in xs ! index2 (rs!!r) c)</span></p></div><div><span style="font-kerning:none"><br></span></div><div><br></div><div>We could generalise this to other dimensions as well; I'd probably use lenses for that.</div><div><br></div><div>I'm not really sure if this fits what you're looking for, so I'd be interested to hear more about what you're trying to achieve. In general I'm happy to add common utility functions like this to the API; you're welcome to make feature requests via the GitHub issue tracker as well: <a href="https://github.com/AccelerateHS/accelerate/issues">https://github.com/AccelerateHS/accelerate/issues</a></div><div><br></div><div>Cheers,</div><div>-Trev</div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 26 Jun 2019 at 13:25, Lana Black <lanablack@amok.cc> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hello cafe,<br>
<br>
Is there a generic way to reshape an array in accelerate[1] assuming the <br>
number of dimensions remains constant? For example, given a matrix, is <br>
there a way to add or, more importantly, remove several rows or columns?<br>
<br>
It seems to me that the API is lacking in this case, but I hope I'm wrong.<br>
<br>
Thank you.<br>
<br>
[1]: <a href="https://hackage.haskell.org/package/accelerate-1.2.0.1/" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/accelerate-1.2.0.1/</a><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>