簡単に言えば...ここに問題があります:
import numpy as np
a = np.array([ 0, 1, 2, 3, 4, 5, 6, 100, 8, 9])
np.where(a==100, -1, a[a])
私が得ることを期待しているのは: 0, 1, 2, 3, 4, 5, 6, -1, 8, 9
代わりに私は得ています:index 100 out of bounds 0<=index<10
インデックスが無効であることは認めますが、[100] ではなく -1 を評価する必要があります... numpy.where() コマンド構造を理解している限り。
この例で私が間違っていることは何ですか?
ここで実際に何をしようとしているのかを明確にするために、より詳細なコードを示します。これは、ルックアップ テーブル配列の再マッピング手順です。
import numpy as np
# gamma-ed look-up table array
lut = np.power(np.linspace(0, 1, 32), 1/2.44)*255.0
def gamma(x):
ln = (len(lut)-1)
idx = np.uint8(x*ln)
frac = x*ln - idx
return np.where( frac == 0.0,
lut[idx],
lut[idx]+(lut[idx+1]-lut[idx])*frac)
# some linear values array to remap
lin = np.linspace(0, 1, 64)
# final look-up remap
gamma_lin = gamma(lin)