Skip to main content

A high-performance array storage and manipulation library

Project description

NumPack

NumPack is a high-performance array storage and manipulation library designed to efficiently handle large NumPy arrays. Built with Rust for performance and exposed to Python through PyO3, NumPack provides a seamless interface for storing, loading, and manipulating large numerical arrays with better performance compared to traditional NumPy storage methods.

Features

  • High Performance: Optimized for both reading and writing large numerical arrays
  • Memory Mapping Support: Efficient memory usage through memory mapping capabilities
  • Selective Loading: Load only the arrays you need, when you need them
  • In-place Operations: Support for in-place array modifications without full file rewrite
  • Parallel I/O: Utilizes parallel processing for improved performance
  • Multiple Data Types: Supports various numerical data types including:
    • Boolean
    • Unsigned integers (8-bit to 64-bit)
    • Signed integers (8-bit to 64-bit)
    • Floating point (32-bit and 64-bit)

Installation

pip install numpack

Requirements

  • Python >= 3.9
  • NumPy

Usage

Basic Operations

import numpy as np
from numpack import NumPack

# Create a NumPack instance
npk = NumPack("data_directory")

# Save arrays
arrays = {
    'array1': np.random.rand(1000, 100).astype(np.float32),
    'array2': np.random.rand(500, 200).astype(np.float32)
}
npk.save(arrays)

# Load arrays
# Normal mode
loaded = npk.load("array1")

# Memory mapping mode for large arrays
with npk.mmap_mode() as mmap_npk:
   # Access specific arrays
   array1 = mmap_npk.load('array1')
   array2 = mmap_npk.load('array2')

Advanced Operations

# Replace specific rows
replacement = np.random.rand(10, 100).astype(np.float32)
npk.replace({'array1': replacement}, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])  # Using list indices
npk.replace({'array1': replacement}, slice(0, 10))  # Using slice notation

# Append new arrays
new_arrays = {
    'array3': np.random.rand(200, 100).astype(np.float32)
}
npk.append(new_arrays)

# Drop arrays or specific rows
npk.drop('array1')  # Drop entire array
npk.drop(['array1', 'array2'])  # Drop multiple arrays
npk.drop('array2', [0, 1, 2])  # Drop specific rows

# Random access operations
data = npk.getitem('array1', [0, 1, 2])  # Access specific rows
data = npk.getitem('array1', slice(0, 10))  # Access using slice
data = npk['array1']  # Dictionary-style access for entire array

# Metadata operations
shapes = npk.get_shape()  # Get shapes of all arrays
shapes = npk.get_shape('array1')  # Get shape of specific array
members = npk.get_member_list()  # Get list of array names
mtime = npk.get_modify_time('array1')  # Get modification time
metadata = npk.get_metadata()  # Get complete metadata

# Stream loading for large arrays
for batch in npk.stream_load('array1', buffer_size=1000):
    # Process 1000 rows at a time
    process_batch(batch)

# Reset/clear storage
npk.reset()  # Clear all arrays

# Iterate over all arrays
for array_name in npk:
    data = npk[array_name]
    print(f"{array_name} shape: {data.shape}")

Lazy Loading and Buffer Operations

NumPack supports lazy loading and buffer operations, which are particularly useful for handling large-scale datasets. Using the lazy=True parameter enables data to be loaded only when actually needed, making it ideal for streaming processing or scenarios where only partial data access is required.

from numpack import NumPack
import numpy as np

# Create NumPack instance and save large-scale data
npk = NumPack("test_data/", drop_if_exists=True)
a = np.random.random((1000000, 128))  # Create a large array
npk.save({"arr1": a})

# Lazy loading - keeps data in buffer
lazy_array = npk.load("arr1", lazy=True)  # LazyArray Object

# Perform computations with lazy-loaded data
# Only required data is loaded into memory
similarity_scores = np.inner(a[0], npk.load("arr1", lazy=True))

Memory Mapping Mode

For large arrays, memory mapping mode provides more efficient memory usage:

# Using memory mapping mode
with npk.mmap_mode() as mmap_npk:
    # Access specific arrays
    array1 = mmap_npk.load('array1')  # Array is not fully loaded into memory
    array2 = mmap_npk.load('array2')
    
    # Perform operations on memory-mapped arrays
    result = array1[0:1000] + array2[0:1000]

Performance

NumPack offers significant performance improvements compared to traditional NumPy storage methods, especially in data modification operations and random access. Below are detailed benchmark results:

Benchmark Results

The following benchmarks were performed on an MacBook Pro (Apple Silicon) with arrays of size 1M x 10 and 500K x 5 (float32).

Storage Operations

Operation NumPack NumPy NPZ NumPy NPY
Save 0.014s (0.86x NPZ, 0.57x NPY) 0.012s 0.008s
Full Load 0.008s (1.63x NPZ, 0.88x NPY) 0.013s 0.007s
Selective Load 0.006s (1.50x NPZ, -) 0.009s -
Mmap Load 0.006s (2.00x NPZ, 0.67x NPY) 0.012s 0.004s

Data Modification Operations

Operation NumPack NumPy NPZ NumPy NPY
Single Row Replace 0.000s (19.00x NPZ, 12.00x NPY) 0.019s 0.012s
Continuous Rows (10K) 0.001s (20.00x NPZ, 12.00x NPY) 0.020s 0.012s
Random Rows (10K) 0.015s (1.33x NPZ, 0.87x NPY) 0.020s 0.013s
Large Data Replace (500K) 0.019s (1.00x NPZ, 0.74x NPY) 0.019s 0.014s

Drop Operations

Operation (1M rows, float32) NumPack NumPy NPZ NumPy NPY
Drop Array 0.001s (22.00x NPZ, 1.00x NPY) 0.022s 0.001s
Drop First Row 0.014s (3.21x NPZ, 1.93x NPY) 0.045s 0.027s
Drop Last Row 0.000s (∞x NPZ, ∞x NPY) 0.045s 0.027s
Drop Middle Row 0.014s (3.21x NPZ, 1.93x NPY) 0.045s 0.027s
Drop Front Continuous (10K rows) 0.016s (2.81x NPZ, 1.69x NPY) 0.045s 0.027s
Drop Middle Continuous (10K rows) 0.016s (2.81x NPZ, 1.69x NPY) 0.045s 0.027s
Drop End Continuous (10K rows) 0.001s (45.00x NPZ, 27.00x NPY) 0.045s 0.027s
Drop Random Rows (10K rows) 0.018s (2.50x NPZ, 1.50x NPY) 0.045s 0.027s
Drop Near Non-continuous (10K rows) 0.015s (3.00x NPZ, 1.80x NPY) 0.045s 0.027s

Append Operations

Operation NumPack NumPy NPZ NumPy NPY
Small Append (1K rows) 0.000s (22.00x NPZ, 18.00x NPY) 0.022s 0.018s
Large Append (500K rows) 0.003s (9.67x NPZ, 6.67x NPY) 0.029s 0.020s

Random Access Performance (10K indices)

Operation NumPack NumPy NPZ NumPy NPY
Random Access 0.008s (2.00x NPZ, 1.38x NPY) 0.016s 0.011s

File Size Comparison

Format Size Ratio
NumPack 47.68 MB 1.0x
NPZ 47.68 MB 1.0x
NPY 47.68 MB 1.0x

Large-scale Data Operations (>1B rows, Float32)

Operation NumPack NumPy NPZ NumPy NPY
Replace Zero-copy in-place modification Memory exceeded Memory exceeded
Drop Zero-copy in-place deletion Memory exceeded Memory exceeded
Append Zero-copy in-place addition Memory exceeded Memory exceeded
Random Access Near-hardware I/O speed Memory exceeded Memory exceeded

Matrix Computation Performance (1M rows x 128 columns, Float32)

Operation NumPack NumPy NPZ NumPy NPY In-Memory
Inner Product 0.019s (6.58x NPZ, 1.00x NPY) 0.125s 0.019s 0.011s
Other calculations are similar to the above case ... ... ... ...

Key Advantage: NumPack achieves the same performance as NumPy's NPY mmap (0.019s) for matrix computations, with several implementation advantages:

  • Uses Arc for reference counting, ensuring automatic resource cleanup
  • Implements MMAP_CACHE to avoid redundant data loading
  • Linux-specific optimizations with huge pages and sequential access hints
  • Supports parallel I/O operations for improved data throughput
  • Optimizes memory usage through Buffer Pool to reduce fragmentation

Key Performance Highlights

  1. Data Modification:

    • Single row replacement: NumPack is 19x faster than NPZ and 12x faster than NPY
    • Continuous rows: NumPack is 20x faster than NPZ and 12x faster than NPY
    • Random rows: NumPack is 1.33x faster than NPZ but 0.87x slower than NPY
    • Large data replacement: NumPack is comparable to NPZ but 0.74x slower than NPY
  2. Drop Operations:

    • Drop array: NumPack is 22x faster than NPZ and comparable to NPY
    • Drop rows: NumPack is currently 0.61x slower than NPZ and 0.41x slower than NPY
    • NumPack provides efficient in-place row deletion without full file rewrite
  3. Append Operations:

    • Small append (1K rows): NumPack is 22x faster than NPZ and 18x faster than NPY
    • Large append (500K rows): NumPack is 9.67x faster than NPZ and 6.67x faster than NPY
    • NumPack excels at both small and large append operations
  4. Loading Performance:

    • Full load: NumPack is 1.63x faster than NPZ but 0.88x slower than NPY
    • Memory-mapped load: NumPack is 2.00x faster than NPZ but 0.67x slower than NPY
    • Selective load: NumPack is 1.50x faster than NPZ
  5. Random Access:

    • NumPack is 2.00x faster than NPZ and 1.38x faster than NPY for random index access
  6. Storage Efficiency:

    • All formats achieve identical compression ratios (47.68 MB)
    • NumPack maintains high performance while keeping file sizes competitive
  7. Matrix Computation:

    • NumPack matches NPY mmap performance while providing better resource management
    • 6.58x faster than NPZ mmap for matrix operations
    • Only 1.72x slower than pure in-memory computation
    • Zero risk of file descriptor leaks or resource exhaustion

Note: All benchmarks were performed with float32 arrays. Performance may vary depending on data types, array sizes, and system configurations. Numbers greater than 1.0x indicate faster performance, while numbers less than 1.0x indicate slower performance.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.

Copyright 2024 NumPack Contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

numpack-0.1.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (621.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

numpack-0.1.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (621.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp313-cp313-win_amd64.whl (428.8 kB view details)

Uploaded CPython 3.13Windows x86-64

numpack-0.1.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (620.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp313-cp313-macosx_11_0_arm64.whl (567.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpack-0.1.5-cp313-cp313-macosx_10_12_x86_64.whl (583.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

numpack-0.1.5-cp312-cp312-win_amd64.whl (428.8 kB view details)

Uploaded CPython 3.12Windows x86-64

numpack-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (620.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (567.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpack-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl (583.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

numpack-0.1.5-cp311-cp311-win_amd64.whl (429.0 kB view details)

Uploaded CPython 3.11Windows x86-64

numpack-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (620.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (567.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpack-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl (584.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

numpack-0.1.5-cp310-cp310-win_amd64.whl (429.0 kB view details)

Uploaded CPython 3.10Windows x86-64

numpack-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (619.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (567.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numpack-0.1.5-cp310-cp310-macosx_10_12_x86_64.whl (584.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

numpack-0.1.5-cp39-cp39-win_amd64.whl (429.3 kB view details)

Uploaded CPython 3.9Windows x86-64

numpack-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (620.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

numpack-0.1.5-cp39-cp39-macosx_11_0_arm64.whl (568.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

numpack-0.1.5-cp39-cp39-macosx_10_12_x86_64.whl (585.3 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file numpack-0.1.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9071463997aa20e901c50a32133af2dd858ae3114d41f7068c9630c93a51712a
MD5 b26e9174ef1dc814c471cd4553997cd6
BLAKE2b-256 2164d0191b36b4c656efeaced5faa5c3621d6a19a600d002a59fff43833ae852

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff2b1ca53580bdfc135e26a38cee96bd743d61fcf077947ba3b30a807377936f
MD5 a666b754f7104e4408274820f6ed3963
BLAKE2b-256 39cdce3e3a0773ff9748d97950b3983a6b1865758766b38195fa2ec717d04fc1

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numpack-0.1.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 428.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for numpack-0.1.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ddf8169d1cbf08c36a6534bfd948a800e79bc15631b70c8472785123bd979fd0
MD5 0bb13c9ac27f38ef685b029fad37451d
BLAKE2b-256 df3cb8557692ae43d931927d4cc1535095de257d2bbe0b6a4320034b6a38e394

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 39ffb0bbe80e6c593c1dc692d5554d6b53162343e52abca4bfa8c43a5ee05f00
MD5 67d2e94e8ea94533e5d66e6cc6f13f9e
BLAKE2b-256 3e3324b15fcd840493a6476cdec34ed2fea345cf5bd3289c6bcaf270196184d5

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9bb5ddcd310105360c30685a58f03dd2d741980b4dbd801a0479fabf7382c61
MD5 059ae9976196d73a9d9b4db4e0411f6c
BLAKE2b-256 bfa795bf8a81f9e7c7cbc6f2ea468869bbbd59af158a398bc5fd43dc70371793

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 59c833a787b6b007c80bde0be194e9edce6a3007ccc92c9f4f81049a430021c1
MD5 48c8fd58331da38e423f78e7b2701765
BLAKE2b-256 dd924d29855ff32bbad17f7c848f980c5287bf598805c19288c01e8f34e27223

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numpack-0.1.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 428.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for numpack-0.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7ad2834b8ea1f399df33c24e416f6b82d66872f812b65e727dd9beda288adfd4
MD5 9f134f7c37ed1f92dd7dc32a69340ffb
BLAKE2b-256 60d044caadbe5fd4dfdb27d51b0aed5c4326376d3e25179fb9ce92f0e63cc1f4

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d1f4c8be2c791419d3c84cc996114870ec49c3cad52b0410b319fecb40e25ad1
MD5 a32911cb1056341fed86ee9ac8631cdb
BLAKE2b-256 3aef3ada515759213c4173996baf3995d3df355cc9229a1a3a1901c0c8b1847d

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da21328bb2f2d438312f5c694cf5526d53d215f5eb014db21630539640648ba2
MD5 11f5adf0235345fc549a4097e3c7924a
BLAKE2b-256 f6d589f62325951ebaa5dce5d09700fcf0abc2059a184c06de593330f6ac62bd

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 241e43727732a41c50780726387406d52d01763e8dcfa57555e647a1a75ada91
MD5 842cbb4958d631df52feeeaa976f70cc
BLAKE2b-256 c638df0754e8cca150f7bd1c68349825544df81ac13e166680f8aeb20280177c

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numpack-0.1.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 429.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for numpack-0.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 48b96823bce226276271100ee66abd29cb3f116197d314c8670979cbf011250f
MD5 5f1fca724018f9708cadf12e095be734
BLAKE2b-256 09b247639ae783f8860313bc1e2f76db38151bf751245b344c8ce975eb690185

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27899bf749b18b758282e81db778ffc2887a70e07a19e7592d1f4ef16569ee81
MD5 75d15a72992b05a36904b468de07fa82
BLAKE2b-256 d5451a90d6c95c26ce3377aa79d54097f3ca6bd0e72419842c8682457110f6be

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d3ee920bbc6a3f08f996ea0332b56d7225b23743b1e2fb9f8090e015b0e0b81
MD5 470331f1b53b9db0773cd6cb57111af1
BLAKE2b-256 b4832563a4b771df021d5d59da243a5cfe2cd7e9d543b39e9e580b33b4af9b85

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0b931df93b500d78af5bec347be7db3aa498dc8d60ce00813c4d11759ee99690
MD5 794d942e73d2c681d31ff6d9affa897d
BLAKE2b-256 dd6be905d393eb06b4c894a170f0557b189f71906eb6a049e3c1c5360b78aeb3

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numpack-0.1.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 429.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for numpack-0.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aacc9b765e05bb59ae055976c2689f3053300f72a290ac0aab86393c973a4e90
MD5 914ef2cca26000196da8df97ba6d8442
BLAKE2b-256 7a7179178cb12b114381baefdd46498e3807b8e9c4654fd58dd2bfbe4bbfec88

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 473ecbc6cd59fa6432e99c1331fd93bbd7ecb30fbd95ea15deab6494d33ad7ff
MD5 3b217c4211ccaf8a7f9037603485fb9b
BLAKE2b-256 d3ac2f522fb8403a96c9ec0bc80f4790953530a9a74ec8edcd3468a7be8bda89

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb694d84c8c506acd3a62f37cc223d9116454eae25ebc76b0c57144951f288ea
MD5 74161cc60441084a2a8ee5db08952924
BLAKE2b-256 e0adb52182eb65b4cf36255d5fd2863381d93c2c37faaa95572fa32b22439b71

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0ab8a136e36a3f2cc99e7840160c2cb505af9a8e1ab96eae43359cdf950210a9
MD5 55b0e5a1acf5c3d192994e3e6d4c6a96
BLAKE2b-256 98e721b1ff9ba03bb91dca958aaaeae769ea44361bb9e337bf80c7529ef52e71

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: numpack-0.1.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 429.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for numpack-0.1.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 23700be0f9dd5cc0a5ca11a7fb60d1b8dda814cd8cbc874689d2529ed40c4cca
MD5 3e7c9c024dbd23ca6ab542bbc24a3bdc
BLAKE2b-256 0e25a22667a7dd354f151fb8173254866a828a332ec7ba1305859ea95c3a1e44

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e3546150e82db77700776cb0213d4c893d06120bcdbaf6567c121e128591f287
MD5 6dcfd325d3f3dd6e72139f51b7375a2d
BLAKE2b-256 676ea1ac360880c4954b3b839450d4a390b28b7135bf2f5d52dd7da7ac03317f

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f1f2793f65b62d88919861c5153530795da2f68a8f0c5a7e247c3ab7fdbdad9
MD5 aa452636daccb6cc2e2faa79f9d14d0f
BLAKE2b-256 780fa048296a68ad82c93abe93ff565f3b0f27ea07c9c72d4be889fcc179c01d

See more details on using hashes here.

File details

Details for the file numpack-0.1.5-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.1.5-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2be6db71e87053be2b15d5356ff329b2a72fb0506be312f69f2242e91508eb2c
MD5 7e0c724fca147ffb95d90c657aa9bd3a
BLAKE2b-256 ae5c93b630886e9798bec573de24520af73188931334d98278e98ec4bb0a3989

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page