【问题标题】:Java slicing multidimensional array libraryJava切片多维数组库
【发布时间】:2013-02-01 06:51:11
【问题描述】:

是否有支持切片的 Java 数组库?我只需要常规的 n x n' x n'' x ... 数组,并从给定维度或整个维度获取一个切片(即不需要范围)。

备注(阅读对潜在 cmets 的回复):

  • 我知道常规 Java 数组不支持它,我也不愿意编写自己的切片库。
  • 使用基于 Collection(建议在对 other question 的评论中)解决问题
  • 使用System.arraycopy 对高维没有帮助,因为它不会显着降低循环的嵌套
  • 这是(有点——长篇大论)数值问题,因此内部代码的 OO 方法不一定是最好的方法——无论如何,最有用的抽象归结为切片
  • 我更喜欢切片的 R/W 视图(如果它只是 R/O 副本,我不会抱怨)

编辑:不幸的是,我需要将对象存储在数组中 - 不仅是 double's。

【问题讨论】:

  • 也许您使用了错误的工具(java)来完成这项工作?或者,将每个维度作为关键的地图可以工作吗?
  • @drone.ah:说来话长,但根据描述,这也是我想说的。

标签: java arrays slice


【解决方案1】:

Vectorz 是一个支持切片的向量/矩阵库,如果您使用 double 值的数组进行数值运算,这是一个不错的选择。它专为 3D 建模、增益、模拟或机器学习环境中的矢量/矩阵数学而设计。

优点:

  • 非常快(一切都由原始 doubles 和 double[] 数组支持)
  • 100% 纯 Java
  • 支持任意切片和切块,主要作为O(1) 操作(即不需要数据复制)
  • 切片完全支持读/写,即您可以使用它们来修改原始结构
  • 您还可以将向量连接在一起,获取子向量视图等。
  • 数字工作的专门课程,例如对角矩阵等

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

【讨论】:

  • +1。看起来不错,但是我需要一些东西来在数组中存储一个对象——不仅是double(我承认——我可能会在描述中使用“数字”来误导)。
  • 不错的图书馆。它似乎是在numpy 数组之后建模的。 V 快,但没有太多功能。
猜你喜欢
  • 2020-05-03
  • 2021-11-23
  • 2014-08-25
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2019-05-09
  • 2012-02-20
相关资源
最近更新 更多