问题标签 [rust-ndarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
94 浏览

rust - 为 trait 实现 trait 时,不能将 `AsArray` 做成对象

基本上我正在尝试制作一个表明能够转换为 2D ndarrayaka的特征ndarray::Array2

我想通过扩展现有AsArray特征来做到这一点,但是出于某种深奥的原因,Rust 禁止我为第三方 struct () 实现第三方特征polars::DataFrame,因此我必须为此创建自己的特征。

无论如何,这适用于polars::DataFrame

但是,我也想为任何已经可以转换为二维数组的东西实现这个,所以我为AsArray上面提到的 trait 实现了这个 trait:

然而,编译器让我为此感到悲痛:

我知道这与对象安全有关,但我认为我已经满足了该页面上提到的所有标准,即 trait doesn't return Self,并且AsArray指定了所有通用参数。

出了什么问题,我该如何解决?

0 投票
1 回答
41 浏览

generics - 在 Array1 上创建一个泛型方法

我有以下 Trait 实现,并希望unit通用 over Array1<T>,但未能找到正确的 Trait 边界(尤其是这对我来说似乎微不足道,所有 T 需要支持的基本上是输出 T 以使函数工作的基本算术) .

编译器建议添加std::ops::Mul<Output = &ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>>,但这样做会一遍又一遍地给出相同的错误。

操场

0 投票
1 回答
57 浏览

matrix - 特征绑定不满足从元组特征构建 ndarray

我对 Rust 很陌生。目前,我正在寻找一种基于元组生成具有维度的矩阵的方法。

通过 zip 的迭代工作正常,我得到 layer_in 和 _out 的输出,但是在创建矩阵时我得到以下错误:

我非常需要社区在这个问题上的帮助。非常感谢。

0 投票
1 回答
166 浏览

rust - Rust ndarray 数组的初等函数数学运算

我只是想为 Rust ndarray 做基本的数学运算(例如,sin、exp、log、sqrt ...)。但是,通过阅读 ndarray 的文档,我没有找到任何有用的示例。

比如说:

如何some_math有效地实施?我当然可以通过循环遍历矩阵的元素来进行元素操作,但这听起来不太好,我不想这样做。

numpypython 中,这简直就是np.sqrt(np.exp(matrix)). 我的意思是 Rust 确实是一门很棒的语言,但是,即使是简单的代数也很不方便(缺乏适当的生态系统)。


更新:ndarray 正在进行拉取请求。如果这被接受,那么你可以简单地做matrix.exp().sqrt()等。

ndarray-doc 中有一个非常隐藏的页面,告诉您如何进行此类数学运算。


一些相关问题:1 2

0 投票
1 回答
80 浏览

rust - 如何将整数添加到 Rust ndarray 中的切片?

让我尝试:

这使:

0 投票
0 回答
80 浏览

rust - Rust 特征绑定膨胀/缺乏继承

我正在尝试将 nalgebra 和/或 ndarray Rust crates 包装成一个抽象LinearOperator特征和相应的AdjointableOperator等特征。问题是我得到了显着的“特征绑定膨胀”,甚至必须指定内部实现细节(Storage, DefaultAllocator)以使编译器不阻塞。在代数的情况下:

(在向量到向量操作的情况下,维度K将为 1。理想情况下apply只是一个函数调用,但编译器目前不允许定义它。)其中一些可能不是单独需要的LinearOperator(例如DefaultAllocator : Allocator<E,M,N>,对于伴随维度),但编译器甚至开始要求它们LinearOperator一次AdjointableOperator也被定义。在 ndarray 的情况下,边界的行数较少,但仍需要指定几乎没有记录的半内部特征。

所有这些 trait bound 都需要为 theAdjointableOperator和其他 trait 重复,所以我尝试至少将需求压缩到自定义 trait 中:

然后仅Matrix<E,N,M,SM> : ValidMatrix<E,N,M,SM>在 的定义中指定LinearOperator。编译器立即开始抱怨DefaultAllocator(可能)未实现。

那么有什么办法可以避免这种“trait bound bloat”,即 crate 的用户基本上必须访问越来越多的 crate 内部实现细节来为暴露的类型实现自己的特征?我可以考虑mul在特征中指定等ValidMatrix,并实现这些,但首先以这种方式设计上游板条箱肯定会更有效。

0 投票
1 回答
51 浏览

rust - 什么是最有效的:对 ArrayBase 或 ArrayView 的引用?

我正在对使用ndarraycrate 操作数组的 Rust 代码库进行改进。我有一个问题,我在文档中找不到明确的答案。

ArrayView将实例作为参数传递给函数是否更有效,还是应该使用对的引用Array?我的直觉是,由于ArrayView是数组的视图,因此在进行计算时,它仅传递数组的视图,并且不授予函数所有权(因此不复制)底层数据。

简而言之,从传递的实例切换ArrayView到传递的引用是否有任何速度提升Array

我的目标是避免无用的内存分配/重复,这在处理大型数组时可能会非常昂贵。

0 投票
1 回答
57 浏览

rust - Rust ndarray 不匹配类型

我正在尝试使用 ndarray_image 从图像中获取 Array3:

Self.data 类型是 Array3,open_image 返回一个 Array3。这很奇怪,但错误类型也相同:

关于版本:我对所有 ndarray-* crate 使用版本“0”。

Cargo.toml 中的依赖项:

0 投票
0 回答
26 浏览

rust - rust ndarray 连接一维数组

我正在尝试沿同一轴连接 3 个 1d 数组,以便它们构成一个长的 1d 数组。

导致错误:

如何将其更改speed_m_s为一维数组?

0 投票
1 回答
56 浏览

python - 如何用 NDArray 输入和输出用 PyO3 包装函数?

我想包装一个函数,该函数采用一维 NDArray (rust-numpy) 和一个 usize 作为参数,并使用 PyO3 返回一个一维数组以从 python 调用代码。不幸的是,我找不到一个很好的例子来说明如何处理 PyO3 中的数组。这是我到目前为止的代码:

我添加了装饰器和模块包装功能。现在我收到此错误:

这是我的 cargo.toml:

有人可以告诉我如何实际修改 SMA 函数以与 PyO3 一起使用吗?谢谢!