NumPy broadcasting aligns compatible array shapes so elementwise operations can combine them without explicitly copying each smaller operand.
NumPy broadcasting: declare axes and bound integer arithmetic
Operation contract
The dispatch calculation has three item quantities and two price schedules. Reshaping quantities to a column and prices to a row produces a three-by-two matrix with an intentional meaning for each axis. Multiplication allocates the result even though the broadcast operands need not be replicated into full matrices. Reduction uses an explicit 64-bit accumulator.
Failure and ownership boundary
The fixture’s values and shape are fixed and fit int64. Fixed-width NumPy arithmetic is not Python’s arbitrary-size integer arithmetic; sufficiently large products can overflow. Money calculations need unit, range and rounding policies before vectorization. An accidental extra axis can also allocate a much larger result than intended. Python Decimal money: parse decimal text and choose rounding explicitly remain part of the contract.
Tested environment
Dependency check: this program was executed on CPython 3.14.6 with numpy==2.5.3. Install these versions in a separate virtual environment. The download includes the recorded environment snapshot; no third-party package is part of the website runtime.
Working program
import numpy as np
quantities = np.array([2, 3, 1], dtype=np.int64)
unit_prices = np.array([125, 150], dtype=np.int64)
line_costs = quantities[:, None] * unit_prices[None, :]
print(line_costs.shape)
print(line_costs.tolist())
print(line_costs.sum(axis=0, dtype=np.int64).tolist())Output
(3, 2)
[[250, 300], [375, 450], [125, 150]]
[750, 900]Costs and limits
For n items and p schedules, the materialized result requires O(n*p) values and arithmetic. Avoiding replicated operands does not remove result storage; choose shapes and budgets before allocating.
Common Mistakes
- Name what each axis means before relying on a compatible shape.
- A fixed-width integer dtype does not prevent arithmetic overflow.
Connected lessons
NumPy slices and indexed copies: verify who owns the buffer, Python Decimal money: parse decimal text and choose rounding explicitly, Pandas nullable integers: missing amounts are not zero.
Related Python operation checks
NumPy floating-point checks: finite values and declared tolerances, Scikit-learn pipelines: fit preprocessing on training data only.
Follow the ownership and update boundary
Python NumPy shape validation: reject accidental broadcasting before arithmetic.
