2017-06-18 18 views
0

私は深度情報を持つ2次元配列、640x480を持っています。2次元配列のpythonテストデータ

値が800〜2800の範囲のリストに(row、col)値を追加したい(値の約5​​%のサンプルデータでtrue)。

私はこのコード(のpython 2.7、W10、新しいノートパソコン2017)を持っている

depth = np.load("depth.npy") # depth.shape = (640, 480), ndarray 
obstacleList[] 
for row in range(480): 
    for col in range(640): 
    dist = depth[col, row] 
    if dist > 800 and dist < 2800: 
     obstacleList.append((col, dist)) 

私の時間の尺度は、それはリストを完了するのに約10秒かかることを私に示しています。

さらにデータを処理するには、最低のdist値を持つcolだけが必要ですが、これで処理時間が増えると思いました。

私のコードで何が問題になっていますか?

+0

あなたのコードは正しいPythonコードではありません - 句読点がありません。 'np.load'ではなく、時間がかかっていることをどのように処理しているのでしょうか? – yeputons

+0

申し訳ありませんが、修正しようとしました。負荷の測定時間があり、0.04秒かかりました。 – user2552713

答えて

0

が見つかりました。numpy.nanminは、実際の時間なしで各列の最小値を検出します。いくつかの値を取り除くために(0のように)私は私の配列は(NaNでフロートのように)フロートとはNaN

B = depth.astype(フロート)

B [< Bで不要な値を置き換えるために変換するために必要な800] = NO時間内の各列のnp.NaN

障害= np.nanmin(B、軸= 1)

は私最小値<の配列を与えた>のNaN(私のマシン上で0.05秒対通常の反復を使用して8秒間)!