Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何用Ndaray做生锈的网点产品?_Rust - Fatal编程技术网

Rust 如何用Ndaray做生锈的网点产品?

Rust 如何用Ndaray做生锈的网点产品?,rust,Rust,我有一个向量,我用ndarray板条箱把它重塑成2D数组。现在我想用vec列做点积。例如, use ndarray::*; pub fn main() { let vec1 = //Read from file let vec2 = //Read from file let mat = Array2::from_shape_vec((row, cols), vec1).unwrap(); let final_mat = mat.dot(&vec2);

我有一个向量,我用ndarray板条箱把它重塑成2D数组。现在我想用vec列做点积。例如,

use ndarray::*;

pub fn main() {

    let vec1 = //Read from file
    let vec2 = //Read from file
    let mat = Array2::from_shape_vec((row, cols), vec1).unwrap();
    let final_mat = mat.dot(&vec2);
}
我得到下面的错误

the trait `ndarray::linalg::impl_linalg::Dot<std::vec::Vec<f32>>` is not implemented for 
`ndarray::ArrayBase<ndarray::data_repr::OwnedRepr<i16>, ndarray::dimension::dim::Dim<[usize; 2]>>`
trait`ndarray::linalg::impl_linalg::Dot`未为实现
`ndarray::ArrayBase`

错误包含您所需的所有信息:trait
Dot
,它表示调用带有
&Vec
类型参数的
.Dot()
方法的能力,而不是为
数组2
实现

您需要将
vec2
转换为
T
类型,
Array2
为其实现
Dot

根据报告:

阵列基的impl点,其中
S:数据,
S2:数据,
A:好的,
这意味着,随着花式类型的简化,
Array2
实现了
Dot
。这也意味着两个数组的元素类型需要相同,但目前
vec1
i16
s组成,
vec2
f32
s组成

解决方案:将
vec2
转换为
Array1
,并使
vec1
f32
s的元素

使用ndarray::{Array1,Array2};
fn main(){
让vec1=//从文件读取,将i16s转换为f32s
让vec2=//从文件中读取
设mat=Array2::from_shape_vec((行,列),vec1).unwrap();
设col_vec=Array1::from(vec2);
让最终材料=材料点(&col\u vec);
}
非常感谢:)消息太大,因此我无法理解