如何从一维列表中创建一个二维未装箱的数组?

时间:2016-01-03 17:04:27

标签: arrays haskell repa

Repa fromListUnboxed允许从值列表中创建一维数组。但是如何在给定一维未装箱的(长度相等)的列表的情况下创建一个二维的?

2 个答案:

答案 0 :(得分:1)

使用reshape功能:reshape :: (Shape sh1, Shape sh2, Source r1 e) => sh2 -> Array r1 sh1 e -> Array D sh2 e。 它只是编译时间(没有运行时开销)。

答案 1 :(得分:0)

我也偶然发现了这个问题。我通过转换列表来解决它 数组到未装箱的向量,将它们连接起来,然后将它们转换回 repa数组。非常笨拙,但这就是我能想到的。

import           Data.Array.Repa     as R
import           Data.Vector.Unboxed as V
import           Prelude             as P

arrs = P.replicate 5 $ fromListUnboxed (ix1 10) [0..9 :: Int]

main = print concatenatedArrs
  where vectors = P.map toUnboxed arrs
        concatenatedVectors = V.concat vectors
        concatenatedArrs = fromUnboxed (R.ix2 5 10) concatenatedVectors