#数组 #多维 #BLAS #矩阵 #数据结构

已删除 rendarray

N 维数组。注意:库名已更改为 ndarray。包名与库名不一致导致各种工具出现许多奇怪的问题。更改包名对每个人来说都更容易!新名称是 ndarray

使用旧的 Rust 2015

0.2.0-alpha.8 2015年12月20日
0.2.0-alpha.6 2015年12月19日
0.1.1 2015年12月14日

#33 in #多维

MIT/Apache

135KB
3K SLoC

ndarray

  • 注意:库名已更改为ndarray. 包名 != 库名导致各种工具出现许多奇怪的问题。更改包名对每个人来说都更容易!

ndarray库提供类似于 numpy 的 ndarray 的 N 维容器。

请在此处阅读 API 文档

亮点

  • 泛型 N 维数组
  • 拥有数组和解视图
    • ArrayBase: N 维数组类型本身。
    • Array: 数据共享和写时复制的数组,它可以充当数据的所有者以及轻量级视图。
    • OwnedArray: 数据唯一拥有的数组。
    • ArrayView, ArrayViewMut: 轻量级数组视图。
  • 切片,也可以使用任意步长,以及负索引表示从轴末尾的元素。
  • 迭代和大多数操作在连续 C 序列数组(默认布局,没有任何转置或不连续子切片)以及最低维度连续的数组上非常高效。
  • 可以使用数组视图来切片和修改任何[T]数据。

状态和注意事项

  • 仍在迭代 API
  • 性能状态
    • 涉及连续 C 序列数组和连续最低维度数组的算术运算优化得非常好。
    • .fold().zip_mut_with() 是执行单遍历和同步遍历的最有效方式。
    • 最低维度不是 C 连续的转置数组仍然是痛点。
  • 有实验性的到线性代数包的桥接rblas.

库功能标志

  • assign_ops
    • 可选,需要 nightly
    • 启用复合赋值运算符
  • rustc-serialize
    • 可选,稳定
    • 启用序列化支持
  • rblas
    • 可选,稳定
    • 启用rblas集成

build_status

如何使用 cargo

[dependencies]
rendarray = "0.2"

最近更改

  • 注意:在未来的某个版本中,索引类型Ix将更改为usize
  • 0.2.0-alpha.8
    • 注意:库名已更改为ndarray. 包名 != 库名导致各种工具出现许多奇怪的问题。更改包名对每个人来说都更容易!
    • 优化scalar_sum()以便在浮点元素情况下也可以进行矢量化。
  • 0.2.0-alpha.7
    • 优化算术运算!
      • 对于 C 连续数组或具有 C 连续最低维度的数组,优化得非常好,并且可以矢量化!
    • 添加.inner_iter(), .inner_iter_mut()
    • 添加.fold(), .zip_mut_with()
    • 添加.scalar_sum()
    • 添加示例examples/life.rs
  • 0.2.0-alpha.6
    • 添加#[已弃用]属性(由最新的夜间版本启用)
    • 添加ArrayBase::linspace,弃用构造函数范围.
  • 0.2.0-alpha.5
    • 添加s![...],一个切片参数宏。
    • 添加aview_mut1(), zeros()
    • 添加.diag_mut()和弃用.diag_iter_mut(), .sub_iter_mut()
    • 添加.uget(), .uget_mut()用于未检查的索引,并弃用旧名称。
    • 改进ArrayBase::from_elem
    • 已删除切片范围,由FromSi.
  • 0.2.0-alpha.4
    • 切片方法,如.slice()现在接受一个固定大小的数组作为切片描述。这允许更多的类型检查来验证轴的数量是否正确。Si添加实验性
    • 集成。rblasinto_shape()
    • 添加允许重塑任何数组或视图类型。0.2.0-alpha.3
  • 添加和编辑了大量文档
    • 0.2.0-alpha.2
  • 当数组数据位于默认内存布局时,改进迭代器的性能。迭代器将包装默认的切片迭代器,循环将自动向量化。
    • 删除方法
    • .indexed()在迭代器上。更改Indexed并添加ÌndexedMut添加.
    • .as_slice(), .as_mut_slice()支持 rustc-serialize
    • 0.2.0-alpha
  • Alpha版本发布!
    • 引入
    • 所有算术运算应接受任何数组类型ArrayBase, OwnedArray, ArrayView, ArrayViewMut
    • 继续引用默认的引用计数写时复制数组
    • Array.view()
    • 添加.view_mut(), .to_owned(), .into_shared(), .slice_mut()
    • 添加.subview_mut(), 某些操作现在返回
    • .map()OwnedArray:
      • .sum()
      • .mean()
      • get
    • 添加get_mut, 以替换现在已弃用的atat_mut, 修复 assign_scalar 中的错误.
    • 添加 Array::default
  • 0.1.1
    • 修复 raw_data_mut 中的错误
    • 首次发布在 crates.io 上
  • 0.1.0
    • 未来演变的起点
    • 许可

双许可以与 Rust 项目兼容。

根据 Apache License,版本 2.0 https://apache.ac.cn/licenses/LICENSE-2.0 或 MIT 许可证 http://opensource.org/licenses/MIT,由您选择。此文件可能不会复制、修改或分发,除非根据那些条款。

依赖项

~1MB

~21K SLoC
itertools 0.4.4