ポイントインデックス3 x mで指定されたポイント3 x nと三角形からなる三角メッシュで作業しています。私はそれを簡単にプロットすることができます。私はまた、範囲外又はnan
であるマスクマスキング点を生成していますので、私はマスクNのサイズを有するMLABPython/Numpy:ポイントマスクからのトライアングルマスク
mesh = mlab.triangular_mesh(p[0,:],p[1,:],p[2,:],t.T
を使用。今私はマスクされた点を持つ三角形をマスクしたい。これまでの私の解決策:
1:すべてのマスクされたポイントをnan
に変えます。
p[mask] = nan
mlab
その後、まだnan
を示し(Iがしきい値フィルタを含める必要があるだろう...)と私は実際に私のデータ
2を台無しにしたくない:三角形マスクを生成します、私はこのように始めました
def triangleMask(triangles, pointmask):
maskedTris = np.zeros((triangles.shape[1]), dtype=np.bool)
maskedIdx = np.nonzero(pointmask)[0]
for i,t in enumerate(triangles.T):
if (i%5000) == 0:
print('working it.:', i)
for p in t:
if p in maskedIdx:
maskedTris[i] = True
break
return maskedTris
これは動作しますが速くはありません。そして、私の場合、n = 250.000、m = 500.000なので、「速くない」というのはかなり問題です。
私はmlab
にマスクキーワードがあることを知っていますが、うまく動作しません。 triangular_mesh呼び出しのポイントのみをマスキングすると、tはpのサイズよりも大きいインデックスを参照するため、yieldとerrorが返されます。
私のループソリューションで行っていたこととまったく同じことを推測します。その100万回の速度がそれだけです。素晴らしい作品です、ありがとう! – Max