小编Pj-*_*Pj-的帖子

内部函数的ranged错误

我在C++中使用ranged有点麻烦.我正在尝试使用它来显示元素和int数组(int []),当我在main函数上执行它时,它完全正常,如:

int main(int argc, char const *argv[]) {

  int v[] = {3, 4, 6, 9, 2, 1};

  for (auto a : v) {
      std::cout << a << " ";
  }
  std::cout << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的和预期的输出,即:

3 4 6 9 2 1
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在函数内部使用ranged时,事情变得有点奇怪,例如我遇到了这段代码的问题:

void printList(int *v);

int main(int argc, char const *argv[]) {

  int v[] = {3, 4, 6, 9, 2, 1};

  printList(v);

  return 0;
}

void printList(int *v) {
  for (auto a : v) {
    std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ arrays ranged-loops

14
推荐指数
3
解决办法
691
查看次数

在python中给定阈值时有效删除彼此接近的数组

我使用 python 来完成这项工作,并且在这里非常客观,我想找到一种“pythonic”方法来从数组数组中删除距离阈值彼此接近的“重复项”。例如,给出这个数组:

[[ 5.024,  1.559,  0.281], [ 6.198,  4.827,  1.653], [ 6.199,  4.828,  1.653]]
Run Code Online (Sandbox Code Playgroud)

观察[ 6.198, 4.827, 1.653][ 6.199, 4.828, 1.653]彼此非常接近,它们的欧几里德距离是0.0014,所以它们几乎是“重复的”,我希望我的最终输出只是:

[[ 5.024,  1.559,  0.281], [ 6.198,  4.827,  1.653]]
Run Code Online (Sandbox Code Playgroud)

我现在拥有的算法是:

to_delete = [];
for i in unique_cluster_centers:
    for ii in unique_cluster_centers:
        if i == ii:
            pass;
        elif np.linalg.norm(np.array(i) - np.array(ii)) <= self.tolerance:
            to_delete.append(ii);
            break;

for i in to_delete:
    try:
        uniques.remove(i);
    except:
        pass;
Run Code Online (Sandbox Code Playgroud)

但它真的很慢,我想知道一些更快和“Pythonic”的方法来解决这个问题。我的公差是0.0001。

python numpy distance duplicates

5
推荐指数
1
解决办法
2547
查看次数

标签 统计

arrays ×1

c++ ×1

distance ×1

duplicates ×1

numpy ×1

python ×1

ranged-loops ×1