我在寻找一种Python式的方法来更快地完成这个手术
import numpy as np
von_knoten = np.array([0, 0, 1, 1, 1, 2, 2, 2, 3, 4])
zu_knoten = np.array([1, 2, 0, 2, 3, 0, 1, 4, 1, 2])
try:
for i in range(0,len(von_knoten)-1):
for j in range(0,len(von_knoten)-1):
if (i != j) & ([von_knoten[i],zu_knoten[i]] == [zu_knoten[j],von_knoten[j]]):
print(str(i)+".column equal " +str(j)+".column")
von_knoten = sp.delete(von_knoten , j)
zu_knoten = sp.delete(zu_knoten , j)
print(von_knoten)
print(zu_knoten)
except:
print('end')
所以我需要最快的方法
^{pr2}$从
[0 0 1 1 1 2 2 2 3 4]
[1 2 0 2 3 0 1 4 1 2]
谢谢;)
这是一个矢量化的输出-
样本运行-
^{pr2}$关于你的代码的一些注释;它不能做你想要的,它应该打印一些东西,你试过运行它吗?你能给我们看看你得到了什么吗?在
首先,只需执行一个
range(len(von_knoten))
;这将执行您想要的操作,因为range
在默认情况下从0
开始,并在结束前一步结束。如果您
delete
来自输入列表的某些项,并尝试访问它们末尾的项,则可能会获得IndexError
s,这将在耗尽对输入列表的分析之前完成。你做了一些
sp.delete
但我们不知道这是什么(代码也不知道),这将引发AttributeError
s。唉,请不要使用
except:
。这将捕捉到你做梦都想不到的例外情况,并可能解释为什么你不明白什么是错的。那么,使用
zip
内建函数来获得排序的二维元组,并删除重复项呢?比如:我让你解决这个问题来得到你想要的东西。在
你正试图建立一个你从未见过的对的集合。 您可以使用
not in
,但需要检查以下任一方面:这给出了元组的列表
^{pr2}$你可以重塑它。在
相关问题 更多 >
编程相关推荐