从Java编写.npy(numpy二进制格式)

Oph*_*tan 4 python java serialization numpy

是否有一个库可以在Java中创建npy文件?

我正在寻找一种在Java中编写大型矩阵的方法,以使用python代码进行读取。

npy似乎是一个不错的选择,因为它不会在python端添加其他依赖项,并且已记录了格式。

我考虑了hdf5格式,但是对本机库的依赖使部署更加困难。

Ser*_*dev 6

不久前我们遇到了相同的问题,并在Kotlin中将NPY和NPZ格式都实现为npy库的一部分。

当前版本(0.2.0)有许多限制。具体来说,它不支持

  • 多维数组
  • 结构化数组
  • 无符号整数类型和其他一些类型。

Java代码:

Path filePath = new File("my.npz").toPath();
int[] values = {1, 2, 3, 4, 5, 6};
int[] shape = {2, 3};
try (NpzFile.Writer writer = NpzFile.write(filePath, true)) {
    writer.write("my-entry", values, shape);
}
Run Code Online (Sandbox Code Playgroud)

Maven的依赖:

<dependency>
    <groupId>org.jetbrains.bio</groupId>
    <artifactId>npy</artifactId>
    <version>0.3.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Jos*_*del 2

我不认为有一个库可以做到这一点,但你可以查看规范,或者可能使用 matlab 格式作为中间体,其中似乎至少有一个 java 库:

http://www.mathworks.com/matlabcentral/fileexchange/10759-jmatio-matlabs-mat-file-io-in-java

我从来没有这样做过,但它可能对你有用,然后你可以通过以下方式读取这些文件:

http://docs.scipy.org/doc/scipy/reference/ generated/scipy.io.loadmat.html