从 arrayfire 中的两个一维数组的划分创建二维数组
Create 2d array from a division of two 1d-arrays in arrayfire
我在 arrayfire 中有两个一维数组,x
和 y
。我想将它们彼此分开,并根据结果创建一个二维数组,即如以下代码所示:
#include <arrayfire>
int main(void){
const size_t x_len = 1024, y_len = 2048;
af::array x(x_len, f64), y(y_len, f64);
//Fill x, y with y \neq 0
//Now either
af::array xy(x_len, y_len, f64); //Gives a 2d-array
for(size_t i = 0; i < x.dims(0); ++i)
for(size_t j = 0; j < y.dims(0); ++j)
xy(i, j) = x(i) / y(j);
//or
af::array xy = x / y; //Gives a 1d-array
return 0;
}
前一种方法给了我目标二维数组,后一种方法没有(如果 x_len != y_len
会导致崩溃。我可以使用上面写的方法,但我认为它会是比专用命令慢得多。
所以,arrayfire中有没有这样的命令,还是必须使用循环?
af::array xy = matmulNT(x, 1/y);
我在 arrayfire 中有两个一维数组,x
和 y
。我想将它们彼此分开,并根据结果创建一个二维数组,即如以下代码所示:
#include <arrayfire>
int main(void){
const size_t x_len = 1024, y_len = 2048;
af::array x(x_len, f64), y(y_len, f64);
//Fill x, y with y \neq 0
//Now either
af::array xy(x_len, y_len, f64); //Gives a 2d-array
for(size_t i = 0; i < x.dims(0); ++i)
for(size_t j = 0; j < y.dims(0); ++j)
xy(i, j) = x(i) / y(j);
//or
af::array xy = x / y; //Gives a 1d-array
return 0;
}
前一种方法给了我目标二维数组,后一种方法没有(如果 x_len != y_len
会导致崩溃。我可以使用上面写的方法,但我认为它会是比专用命令慢得多。
所以,arrayfire中有没有这样的命令,还是必须使用循环?
af::array xy = matmulNT(x, 1/y);