Skip to content

bytedeco/storch-numpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Storch-Numpy: A Scala 3 Implementation of NumPy

Overview

Storch-Numpy is a NumPy-like library implemented in Scala 3. It enables seamless interoperability with Python's NumPy, allowing users to read from and write to .npy and .npz files across both environments. The library supports common NumPy operations and is poised to expand with more features in the future.

Key Features

  • File I/O: Read and write .npy and .npz files, ensuring compatibility with files generated by Python's NumPy.
  • Data Type Support: Support for a wide range of data types, including bool, uint8, int16, float32, and more.
  • Array Operations: Implementation of common NumPy array operations such as broadcasting and transposing.

Quick Start

Prerequisites

  • Scala 3: This project is developed using Scala 3. We recommend version 3.6.4.
  • SBT: The project build tool. Version 1.10.7 is recommended.

Project Dependencies

libraryDependencies += "io.github.mullerhai" % "storch-numpy_3" % "0.1.0"

The necessary dependencies are already included in build.sbt:

import torch.numpy.serve.Numpy import java.nio.file.Paths // Read a .npy file def float64NpyFile( path: String = "D:\\data\\git\\storch-numpy\\src\\main\\scala\\com\\github\\dreamolight\\jnpy\\random_float64_array.npy" ): Unit = { val np = new Numpy(path) val data = np.float64Elements.toSeq data.foreach(d => print(s"$d \t")) } // Save a .npy file val data = Array(1.0, 2.0, 3.0) val shape = Array(3) val dataType = torch.numpy.enums.DType.Float64 val endian = torch.numpy.enums.Endian.Little val isFortranOrder = false val savePath = "new_random_float64_array.npy" Numpy.saveToNumpyFile(savePath, data, shape, dataType, endian, isFortranOrder)
import java.nio.file.Paths import scala.util.Using import torch.numpy.extern.NpzFile // Write to a .npz file val booleanArray = Array(true, false, true) val npzFilePath = Paths.get("example.npz") Using.resource(NpzFile.write(npzFilePath)) { writer => writer.write("boolean_array", booleanArray, Array(1, 3)) println("all write finish .... \r\n ") } // Read from a .npz file Using.resource(NpzFile.read(Paths.get("example.npz"))) { reader => val readBooleanArray = reader("boolean_array").asBooleanArray() println(readBooleanArray.mkString(",")) }

About

Pure Numpy ON Scala3

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published