@mutable.Vector
本页记录 @mutable.Vector 在当前 0.4.7 仓库状态下的 API 基线。
概览
@mutable.Vector是仓库里的可变向量类型。- 底层存储是包装后的
Array[T],因此索引写入会直接更新内部缓冲区。 - 即使在这个包里,很多代数辅助函数仍然会返回新向量,便于调用方在“原地修改”和“返回新值”之间显式选择。
核心 API
Vector::from_array(arr)/Vector::make(n, elem)/Vector::makei(n, f)分别用于从现有数据、重复值或索引函数构造向量。length()返回向量长度。v[i]/v[i] = x读取或写入单个元素。边界行为遵循Array[T]。copy()返回当前向量的深拷贝。iter()按当前顺序遍历元素。
返回新向量的辅助函数
map(f)/zip_with(other, f)返回变换后的新向量,不修改self。add_constant(cst)给每个元素加上同一个标量。left_scale(scalar)/right_scale(scalar)返回缩放后的新向量。lerp(other, alpha)计算(1 - alpha) * self + alpha * other。+、*、一元-分别表示按元素加法、Hadamard 乘法和取负。
原地辅助函数
map_inplace(f)原地改写所有元素。left_scale_inplace(scalar)/right_scale_inplace(scalar)原地执行标量缩放。
标量与矩阵辅助函数
dot(other)计算点积。长度不一致时会直接中止。lin_comb(weights, vectors)顶层辅助函数,用一组权重和输入向量组合出新向量。空输入、数量不一致或向量长度不一致都会直接中止。to_col_matrix()/to_row_matrix()把向量转换成矩阵形式。scaled_matrix()创建以该向量为主对角线的对角矩阵。tensor_product(other)计算外积并返回矩阵。
使用建议
- 当工作负载确实以更新为主时,直接使用索引或
*_inplace辅助函数。 - 当你希望保留旧值,或让代码风格更接近
@immut.Vector时,优先使用那些返回新向量的辅助函数。 backends/default.DenseVector包装的就是这个 concrete 实现。 如果你要从 trait 导向的默认后端入口进入,请看 backends/default API。