许多繁重的数据任务以及优化问题都可归结为在多维数组上执行计算。今天,我们想与你分享适合此类计算的基础库——Multik。
Multik同时提供多维数组数据结构和数学运算的实现。该库具有简单明了的API,并提供了优化过的性能。
使用Multik
事不宜迟,这里是一些用到Multik的操作
创建多维数组
创建向量:
通过集合创建向量:
创建矩阵(二维数组):
创建全是0且固定长度的矩阵:
创建一个单位矩阵(对角线为1,其余设置为0):
创建3维数组(multik最多支持4维):
在多维数组上执行数学运算
按元素进行数学运算
汇总函数
遍历操作
索引/切片/循环
Multik架构
最初,我们尝试将Kotlin绑定添加到现有解决方案,例如NumPy。然而,事实证明这很笨重且引入了不必要的环境复杂性,而且对开销来说几乎没有任何好处。结果我们放弃了这种方案,并从头开始了Multik。
在Multik中,数据结构以及其上操作的实现是分离的,你需要将它们作为单独的依赖项添加到项目中。无论你决定在项目中使用哪种实现,该方案提供了一致的API。那么这些不同的实现是什么?
当前,有三种不同的方案:
multik-jvm
:数学运算的Kotlin/JVM实现。multik-native
:C 实现。OpenBLAS用于线性代数。multik-default
:默认实现,它结合了原生和JVM实现以达到最优性能。当然你也可以自己实现!
Multik仍处于开发的早期阶段,我们期待你的反馈,功能想法和贡献!该项目的GitHub仓库地址:https://github.com/Kotlin/multik。快来试试 Multik 吧,让我们知道你在未来版本中想看到什么。谢谢!