npy allows to read and write files in NPY npy and [NPZ] npy formats
on the JVM.
The latest version of npy is available on [Maven Central] maven-central. If you're using
Gradle just add the following to your build.gradle:
repositories {
mavenCentral()
}
dependencies {
compile 'org.jetbrains.bio:npy:0.3.5'
}
With Maven, specify the following in your pom.xml:
<dependency>
<groupId>org.jetbrains.bio</groupId>
<artifactId>npy</artifactId>
<version>0.3.5</version>
</dependency>The previous versions were published on Bintray. They can be downloaded from GitHub Releases.
val values = intArrayOf(1, 2, 3, 4, 5, 6)
val path = Paths.get("sample.npy")
NpyFile.write(path, values, shape = intArrayOf(2, 3))
println(NpyFile.read(path))
// => NpyArray{data=[1, 2, 3, 4, 5, 6], shape=[2, 3]}val values1 = intArrayOf(1, 2, 3, 4, 5, 6)
val values2 = booleanArrayOf(true, false)
val path = Paths.get("sample.npz")
NpzFile.write(path).use {
it.write("xs", values1, shape = intArrayOf(2, 3))
it.write("mask", values2)
}
NpzFile.read(path).use {
println(it.introspect())
// => [NpzEntry{name=xs, type=int, shape=[2, 3]},
// NpzEntry{name=mask, type=boolean, shape=[2]}]
println("xs = ${it["xs"]}")
println("mask = ${it["mask"]}")
// => xs = NpyArray{data=[1, 2, 3, 4, 5, 6], shape=[2, 3]}
// mask = NpyArray{data=[true, false], shape=[2]}
}The implementation is rather minimal at the moment. Specifically it does not support the following types:
- unsigned integral types (treated as signed),
- bit field,
- complex,
- object,
- Unicode
- void*
- intersections aka types for structured arrays.
The build process is as simple as
$ ./gradlew jarNote: don't use ./gradlew assemble, since it includes the signing of the artifacts
and will fail if the correct credentials are not provided.
No extra configuration is required for running the tests from Gradle
$ ./gradlew testHowever, some tests require Python and NumPy to run and will be skipped unless you have these.