Registry / serialization / numpyencoder

numpyencoder

JSON →
library0.3.2pypypi✓ verified 35d ago

NumpyEncoder is a Python JSON encoder designed to seamlessly handle various NumPy data types, including `ndarray`, `np.number`, `np.datetime64`, and more, which are not natively supported by Python's standard `json` module. It extends `json.JSONEncoder` to provide a plug-and-play solution for serializing data structures containing NumPy objects into JSON strings. The current version is 0.3.2, with releases occurring periodically to maintain compatibility with evolving NumPy versions.

serializationdata
Install & Compatibility
Where this runs
tested against v0.3.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.920 runs
installs and imports cleanly · install 0.0s · import 0.268s · 90.1MB
glibc
py 3.103.920 runs
installs and imports cleanly · install 3.7s · import 0.273s · 86MB
90MB installed
● package 90MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

from numpyencoder import NumpyEncoder

This quickstart demonstrates how to use `NumpyEncoder` to serialize a dictionary containing various NumPy data types (an array, a scalar integer, and a datetime object) into a JSON string. The `cls=NumpyEncoder` argument passed to `json.dumps` ensures that NumPy objects are correctly converted into JSON-serializable Python native types.

import json import numpy as np from numpyencoder import NumpyEncoder # Example with a NumPy array and scalar numpy_data = { 'array_field': np.array([0, 1.5, 2, 3]), 'scalar_field': np.int64(123), 'datetime_field': np.datetime64('2023-01-01T12:00:00') } # Serialize the data using NumpyEncoder json_output = json.dumps(numpy_data, cls=NumpyEncoder, indent=2) print(json_output) # The output will convert numpy types to native Python types (lists, int, string for datetime) expected_output_fragment = '"array_field": [ 0.0, 1.5, 2.0, 3.0 ], "scalar_field": 123, "datetime_field": "2023-01-01T12:00:00"'
Debug
Known footguns
breakingNumpyEncoder versions prior to 0.3.0 are not fully compatible with NumPy 2.0.0 due to significant breaking changes in NumPy's API, ABI, and type promotion rules.
gotchaConverting NumPy data types (especially floats) to JSON can lead to a loss of precision, as JSON numbers typically follow IEEE 754 double-precision floating-point format. While `numpyencoder` aims for fidelity, critical applications requiring exact precision might consider alternative serialization formats like HDF5 or `.npy`.
deprecatedNumPy 2.0 introduced deprecations for certain type aliases and internal behaviors. While `numpyencoder` v0.3.2 includes updates to handle these gracefully, relying on deprecated NumPy features directly in your code might lead to future compatibility issues.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
20 hits · last 30 days
gptbot
4
ahrefsbot
4
bytedance
4
amazonbot
3
script
1
Resources