-
Notifications
You must be signed in to change notification settings - Fork 0
Embeddings npyfile
Development build. This page describes
main, not a released package. The latest published Lodestar.Embeddings is 0.4.0 — read its documentation.
Reads and writes a block of float in numpy's .npy format.
public static class NpyFileExample — a block out and the same block back, without touching a file.
using Lodestar.Embeddings.Persistence;
float[] vectors = [1f, -2f, 3.5f, 0f, 0.25f, -0.5f];
using var buffer = new MemoryStream();
NpyFile.Write(buffer, vectors, 3, 2);
buffer.Position = 0;
NpyBlock block = NpyFile.Read(buffer);
string read = $"{block.Shape[0]}x{block.Shape[1]} {block.Values.Length}"; // => 3x2 6Remarks — this is an interop format for a float matrix, not a second artifact format.
EmbeddingIndex.Save is unchanged and still writes the
versioned JSON decision 0011 chose; a .npy
carries no ids, no normalization flag and no schema header, so it cannot stand in for one.
What it is for is the other direction: vectors that came from numpy, or vectors going to it.
The header is a Python dict literal and is never evaluated. numpy writes
{'descr': '<f4', 'fortran_order': False, 'shape': (3, 4), } — executable source, which is the
hazard decision 0011 refused pickle over. Only a fixed grammar is accepted here: three known
keys, each with one of a closed set of values, and anything else refused rather than interpreted.
descr: '|O' — numpy's object dtype, whose payload is a pickle — is refused by name, before a
byte of that payload is read.
Only float32, C order, little-endian, one or two dimensions. A file outside that is refused with
a message naming what it held, rather than read approximately.
Applies to — net10.0, netstandard2.0.
See also — NpyBlock, EmbeddingIndex,
the persistence index.
| Member | What it does |
|---|---|
NpyFile.Read |
Reads a .npy into a block and its shape. |
NpyFile.Write |
Writes a block as a .npy. |
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- 0051-the-save-paths-cost-is-the-buffer-not-the-encoding
- 0052-pre-sizing-the-artifact-file-buys-nothing-on-a-delayed-allocation-filesystem
- 0053-the-payload-buffer-is-not-pooled-because-residency-outlives-the-load
- 0054-the-payload-buffer-is-pooled-after-all-because-the-collection-is-the-cost
- 0055-the-artifact-gets-a-binary-sidecar-once-a-block-can-be-ingested-whole
- 0056-a-block-may-be-adopted-and-the-invariant-is-the-callers-to-keep
- 0057-the-npy-read-serves-a-stream-and-a-buffer-differently
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels