我在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) 我使用 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。