1

ポイントの選択(つまり、近傍)があります

各ポイントには XYZC 値があります。C は 1 または 0 です。

いずれかのポイントの C 値が 1 の場合、中心点の C 値を 0 に割り当てたいと思います。

すべてのポイントの C 値が 0 の場合、中心点の C 値を 1 に割り当てます。

    n=np.zeros((1,1))

    for b in range(0,6):
        bb = coordlist[b][4] 
        if bb==1:
            break
        n+=bb

    if n< 1:
        in_cloud[point][4] =1    

これはこれを行うための最も迅速で最良の方法ですか?近所で最大20/30ポイントでやります。

4

2 に答える 2

2

coordlistを 2 次元配列として定義できます。

coordlist = np.array(coordlist)

一度に比較を行います。

if np.any(coordlist[:,4]==1):
    in_cloud[point][4] = 0
else:
    in_cloud[point][4] = 1

ただし、リストも確認する必要があります。この例のように、すべてを からto に変更し、Python for ループを回避するin_cloudことで、コードの全体的な速度を向上させることができるようです。listnp.ndarray

于 2013-09-19T15:36:55.260 に答える
1
incloud[point][3] = not any(xyzc[3] for xyzc in coordlist)

または、最初にできる場合

coordlist = numpy.array(coordlist)

やったほうが早くなる

incloud[point][3] = not coordlist[:,3].any()

を使用したことは知っていますthings_to_index[4]が、4 番目のアイテムはインデックス 3 にあるため、それはあなたの間違いのようです (「C」は「XYZC」の 4 番目のアイテムです)。

于 2013-09-19T16:03:55.640 に答える