ここでは、興味深い観察です:ndarry:高価ndarray反復で
1 import numpy as np
2 data = np.array([[255,255,255], [0, 0, 255], [255, 0, 0]], np.int8)
3 for i in range(1000000):
4 for row in data:
5 for col in row:
6 flag = col > 0
上記のコードが終了する〜17秒かかります。私は
data = data.tolist()
を実行して一覧表示するdata
を変換する場合は、全体のことは最後まで< 1秒かかります。
知っておきたいこと: 1. ndarray値比較の効率が低い理由は何ですか? 2. ndarrayをリストに変換しないと、比較を行うより適切な方法は何ですか?それをリストに隠すよりも効率的でしょうか?
ありがとうございました!
--------------編集した質問:-------------
@hpauljが指摘したように、それは反復ではありません値の比較は非常に高価です。しかし、私は配列を反復する必要があります。それをリストに変換するよりも良い方法はありますか?
値の比較は高価ではなく、繰り返しです。あなたは配列全体に比較を適用することになっています。 – hpaulj
バグが見つかりました:np.int8タイプは255を格納できません。-128〜127しか格納できない符号付きタイプです。したがって、データはnp.array([[ - 1、-1、-1]、[0、0、-1]、[-1、0、0]]、np.int8) 'になります。 – gzc
@hpaulj Ya。合意したただ考えた。しかし、私はndarray全体を反復する必要があります。もっと良い方法? – cheng