gpt4 book ai didi

c++ - 迭代地从 ArrayFire 数组中删除元素

转载 作者:行者123 更新时间:2023-11-28 06:07:37 27 4
gpt4 key购买 nike

我试图在循环中迭代地从 ArrayFire 数组 (af::array) 中删除元素。假设我有:

af::array arr = af::range(af::dim4(4), -1, u32) + 1);
// arr = [1 2 3 4] (it's a column vector, though shown as a row vector here)

在循环的每次迭代中,我都必须从数组中删除一个值。要删除的值取决于计算,其结果并不总是相同的。所以在循环的 4 次迭代中,过程可以看起来像:

// Iter 1: arr = [1 3 4] (removed 2)
// Iter 2: arr = [1 4] (removed 3)
// Iter 3: arr = [4] (removed 1)
// Iter 4: arr = empty (removed 4)

我想知道是否有人对如何最好地完成这项工作提出了建议。我有一项工作技术需要将 arr 转换为 C 数组,删除元素,然后重新转换回设备 af::array。是否有更惯用/更有效的方法来完成此任务?

最佳答案

假设您的示例中的代码使用列,我将执行以下操作,因为似乎没有任何类型的行/列删除功能。

i 设置为我们要删除的行,编号从 0 开始:

int i=2;
arr = af::join(0,arr.rows(0,i-1), arr.rows(i+1,end));
af::af_print(arr);

打印:

 arr [3 1 1 1]
1
2
4

如果您希望将数据放在列 vector 中,请将“行”函数更改为“列”函数。

关于c++ - 迭代地从 ArrayFire 数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com