Java与Eclipse一月的多维数组

Eclipse January是Java中的一组常见数据结构,包括一个用于处理数字数据的强大库。 随着数据量和复杂性的急剧增加(即所谓的“大数据”),Eclipse January提供了一个数字库,可以简化多维数组形式的数据的处理和操作。

库的核心是IDataset和Dataset接口和类。 因此,出于某些原因,您可能要使用Eclipse January

  • 熟悉 。 提供熟悉的功能,尤其是给NumPy用户。
  • 健壮 。 具有测试套件,并在Diamond Light Source大量用于生产中。
  • 不再传递double [] 。 IDataset为基于API的对象提供了一致的对象,与使用双数组或类似方法相比,其清晰度得到了显着提高。
  • 优化 。 针对速度进行了优化,并且一直在不断改进。
  • 可扩展 。 允许使用“惰性数据集”处理大于可用内存的数据集。
  • 专注于您的算法 。 通过重用该库,您可以专注于代码。

本文概述了多维数组的Dataset类的功能。

数组创建

Eclipse January支持直接创建数组。 假设我们要使用以下数据创建二维数组:

[1、2、3,
4 5 6
7、8、9]

首先,我们可以创建一个新的数据集:

Dataset dataset = DatasetFactory.createFromObject(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });

这为我们提供了一个具有9个元素的一维数组,如下所示:

[1.0000000、2.0000000、3.0000000、4.0000000、5.0000000、6.0000000、7.0000000、8.0000000、9.0000000]

然后,我们需要将其重塑为3×3数组:

dataset = dataset.reshape(3, 3);

重塑后的数据集:

[[1.0000000,2.0000000,3.0000000],
[4.0000000、5.0000000、6.0000000],
[7.0000000、8.0000000、9.0000000]

或者我们可以一步完成所有操作:

Dataset another = DatasetFactory.createFromObject(new double[] { 1, 1, 2, 3, 5, 8, 13, 21, 34 }).reshape(3, 3);

另一个数据集:

[[1.0000000,1.0000000,2.0000000],
[3.0000000、5.0000000、8.0000000],
[13.000000、21.000000、34.000000]

有一些获取数据集的形状和维数的方法

System.out.println("shape of dataset: " + Arrays.toString(dataset.getShape())); System.out.println("number of dimensions: " + dataset.getRank());

这给了我们:

数据集的形状:[3,3]
尺寸数:2

数据集还提供范围功能和随机函数,所有这些都可以轻松创建数组:

Dataset a = DatasetFactory.createRange(15, Dataset.INT32).reshape(3, 5);
[[0,1,2,3,4],
[5、6、7、8、9],
[10、11、12、13、14]
Dataset rand = Random.rand(new int[]{3,4});
[[0.37239989、0.89414117、0.94036325、0.47739019],
[0.47194246、0.12534931、0.41001452、0.90583666],
[0.81731075、0.76468139、0.97097539、0.37182491]

IDataset不仅用于双打,还可以与其他类型一起使用,例如:

  • 整数,浮点数
  • 复杂
  • 复合类型,例如RGB
  • 真的任何课!
资料集

图1:数据集类型层次结构

阵列运算

org.eclipse.january.dataset.Maths提供了丰富的功能来操作Dataset类。 例如,以下是添加2个数据集数组的方法:

Dataset add = Maths.add(dataset, another);

或者,您也可以作为就地添加。 下面的示例创建一个新的3×3数组,然后向该数组的每个元素添加100。

Dataset inplace = DatasetFactory.createFromObject(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }).reshape(3, 3);
inplace.iadd(100);
[[101.0000000,102.0000000,103.0000000],
[104.0000000,105.0000000,106.0000000],
[107.0000000、108.0000000、109.0000000]

数学库还提供以下功能:

  • 基本操作:加,减
  • 指数和对数运算
  • 统计:最小值,最大值,平均值,中位数,分位数,协方差,峰度等
  • 三角函数:sin,cos,tan等
  • 和更多!

此外,还有一个对数据集进行操作的LinearAlgebra类。

切片

数据集简化了数据部分的提取,称为“切片”。 例如,给定下面的数组,假设我们要提取数据2、3、5和6。

[1、2、3,
4 5 6
7、8、9]

此数据位于第一行和第二行以及第二列和第三列。 对于切片,行和列的索引从零开始。 基本切片由开始索引和停止索引组成,其中开始索引为包含索引,而停止索引为排斥索引。 也可以指定可选的增量。 因此,此示例将表示为:

Dataset slice = dataset.getSlice(new Slice(0, 2), new Slice(1, 3));

数据集切片:

[[2.0000000,3.0000000],
[5.0000000,6.0000000]

在处理3维或n维数据时,切片和数组操作功能特别有价值。

尝试Eclipse January

入门指南》显示了如何开始使用Eclipse中的示例项目。 本文中的大多数代码都来自BasicExample类。 在尝试了基础知识之后,可以查看并运行一些更高级的示例:

  • NumPy示例显示了常见的NumPy构造如何映射到Eclipse数据集。
  • 切片示例演示了切片,包括如何从数据集中切出少量数据,而该数据集太大而无法一次全部放入内存中。
  • 错误示例演示了将错误应用于数据集。
  • 迭代示例演示了几种遍历数据集的方法。
  • 惰性示例演示了如何使用未完全加载到内存中的数据集。

Eclipse January是Eclipse Foundation科学工作组的一个孵化项目。 多年来,数据结构是由Diamond Light Source和Oakridge National Labs开发和使用的,这两个机构在处理2D,3D和多维格式的海量复杂数据方面具有丰富的经验。

Eclipse January的强大功能不仅来自能够处理数据的简单性和便利性,而且还提供了数据存储的基本标准。 这样可以轻松集成基于Dataset类的工具。 因此,随着数据大小的不断增长和越来越复杂,Eclipse January提供了一个方便,强大,强大的库来简化和标准化Java中的多维数组。

eclipseorb_color

这篇文章最初发表在2016年 11 月的Eclipse Newsletter:E clipse Loves Science

有关更多信息和文章,请查阅Eclipse Newsletter

翻译自: https://jaxenter.com/multi-dimensional-arrays-in-java-with-eclipse-january-130790.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值