考虑一个常规矩阵,代表如图所示编号的节点:
我想要列出图中所代表的所有三角形,并将其结果保存在以下二维列表中:
然而,双层循环操作使得这种方法非常缓慢。有没有一种聪明的方式利用numpy来更快地完成这个任务?
[[0,1,4],[1,5,4],[1,2,5],[2,6,5],...,[11,15,14]]
假设矩阵的尺寸是(Nr
XNc
)(在这种情况下为4X4),我可以通过以下代码实现此结果:def MakeFaces(Nr,Nc):
Nfaces=(Nr-1)*(Nc-1)*2
Faces=np.zeros((Nfaces,3),dtype=np.int32)
for r in range(Nr-1):
for c in range(Nc-1):
fi=(r*(Nc-1)+c)*2
l1=r*Nc+c
l2=l1+1
l3=l1+Nc
l4=l3+1
Faces[fi]=[l1,l2,l3]
Faces[fi+1]=[l2,l4,l3]
return Faces
然而,双层循环操作使得这种方法非常缓慢。有没有一种聪明的方式利用numpy来更快地完成这个任务?