Java多维数组切片库

3
有没有支持切片的Java数组库?我只需要常规的n x n' x n'' x ...数组,可以从给定的维度中取一个切片或整个维度(即不需要范围)。
注意事项(阅读潜在评论的回复):
- 我知道常规的Java数组不支持它,我也不想编写自己的切片库。 - 使用集合(在其他问题的评论中建议)会转移问题。 - 使用System.arraycopy在高维度上无济于事,因为它并没有显著降低循环嵌套的层数。 - 这是(有点长的故事)数值问题,因此面向对象的内部代码方法并不一定是最好的方法 - 最可用的抽象归结为切片。 - 我希望从切片中获得R/W视图(如果它只是R/O副本,我也不会抱怨)。
编辑:不幸的是,我需要在数组内存储对象 - 不仅仅是double。

也许你在这项工作中使用了错误的工具(Java)?或者,一个以每个维度为键的映射表是否可行? - drone.ah
@drone.ah:这是一个漫长的故事,但基于描述,我也会这么说。 - Maciej Piechotka
1个回答

5
Vectorz 是一个支持切片的向量/矩阵库,如果您使用 double 数组进行数值计算,那么这是一个很好的选择。它专门为 3D 建模、增益、仿真或机器学习等领域的向量/矩阵数学而设计。

优点:

  • 非常快(所有操作都由原始的 doubledouble[] 数组支持)
  • 100% 纯 Java
  • 支持任意切片操作,大多数操作的时间复杂度为 O(1)(即不需要数据复制)
  • 切片完全支持读写,即您可以使用它们来修改原始结构
  • 您还可以将向量连接在一起、获取子向量视图等
  • 针对数值计算的专用类,例如对角矩阵等

它目前支持 0、1 和 2 维数组,更高维数组正在计划中但尚未实现。


+1。看起来不错,但我需要将一个对象存储在数组中 - 不仅仅是 double(我承认 - 我可能会在描述中使用“数字”而导致误导)。 - Maciej Piechotka
不错的库。它似乎是以 numpy 数组为模型设计的。非常快,但功能不太多。 - WestCoastProjects

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接