Vectorization, Index Alignment, and Shape Safety
Install and import#
npm install fintech-algorithmsimport { vectorizationIndexAlignmentAndShapeSafety } from "fintech-algorithms/foundations/statistical-computing-and-reproducibility/vectorization-index-alignment-and-shape-safety";Signature#
vectorizationIndexAlignmentAndShapeSafety(input)Inner-joins two labelled vectors on their index field and reports what each side lost in the process.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | D00Input | Reads leftVector and rightVector, each a list of records carrying an index label and a numeric value. A non-empty values list of finite numbers must also be present; it is validated but not joined. |
Returns#
D00Output
aligned holds one record per shared label with index, left and right, keeping the left vector's order. alignedCount sizes it, and droppedLeft and droppedRight are each side's length minus that count.
Errors#
- When
valuesis absent, empty, or holds a non-finite number — throws RangeError
Complexity: time O(n),
space O(n).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"values": [1, 2, 3, 4, 5],
"floatingValue": 0.1,
"maxSafeMagnitude": 1.7976931348623157e+308,
"window": 3,
"rawValues": [1, null, 2, "bad", 3],
"invalidPolicy": "drop-and-report",
"seed": 42,
"sampleCount": 5,
"leftVector": [
{
"index": "A",
"value": 1
},
{
"index": "B",
"value": 2
}
],
"rightVector": [
{
"index": "B",
"value": 20
},
{
"index": "C",
"value": 30
}
],
"train": [10, 12, 14, 16],
"test": [18, 20],
"actual": [1, 2.0000001, 3],
"expected": [1, 2, 3]
}Showing 14 of 18 fields.
Call#
vectorizationIndexAlignmentAndShapeSafety(input)Returns#
object with 2 fields: aligned, alignedCount
{
"aligned": [
{
"index": "B",
"left": 2,
"right": 20
}
],
"alignedCount": 1
}Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Floating-Point Arithmetic — IEEE 754-2019
- math.fsum — Python Documentation
- Random Sampling — NumPy Documentation
- Common Pitfalls and Recommended Practices — scikit-learn
- Historical-example decision