我需要什么? [无序列表]
我看到了什么?
所以请帮助我选择。
编辑 A = B + C指的是元素明智的添加,而不是列表连接
答案 0 :(得分:8)
正确,社区尚未确定良好的阵列实施。我认为提交Vector API并删除Data.Array是一个很好的Haskell Prime提交。
矢量非常成熟!它有:
它没有:
注意:您可以将字节串转换为任意的向量,因此如果您将图像作为字节串,则通过Vector.Storable,您可以将图像作为向量执行所需的操作。
答案 1 :(得分:3)
(我不允许发表评论)
rpg:hmatrix是否接受Data.Vector
?它有一个Data.Packed.Vector
,但它们是一样的吗?
是。对于1D向量,hmatrix的最后一个版本默认使用Data.Vector.Storable
(以前它是可选的)。 Hackage中没有显示对vector的依赖,可能是因为它位于配置标志中。
对于LAPACK,兼容性矩阵不是Vector
或Vector t
,但可以轻松转换(例如:Data.Vector.fromList . toRows
)。
答案 2 :(得分:2)
如果要绑定到流行的C库,最好的选项可能是hmatrix和blas。 Blas只是对BLAS库的绑定,而hmatrix提供了一些更高级别的操作。还有许多基于hmatrix的库提供了进一步的功能。如果您正在进行任何类型的矩阵工作,那就是我要开始的。
矢量包也是一个不错的选择;它稳定并提供卓越的性能。 Data.Vector.Storable
类型表示为C数组,因此从它们与其他C库的接口是微不足道的。最大的缺点是没有矩阵支持,所以你必须自己做。
至于导出为图像格式,大多数haskell图像库似乎都使用ByteStrings。您可以转换为ByteString,也可以绑定到执行所需操作的C库。如果您发现Haskell库可以满足您的需求,那么将hmatrix数据转换为正确的格式应该很容易。