0
私はscipy.ndimageを使ってラベル付けした配列を持っていますが、各要素に対応するラベル固有の要素を掛けたいと思います。私はこれにndimage.labeled_comprehensionを使うことができると思ったが、関数に引数を渡す方法を理解できないようだ。例えば:配列にラベル付けされたndimageに引数をとる関数を適用します。
a = np.random.random(9).reshape(3,3)
lbls = np.repeat(np.arange(3),3).reshape(3,3)
ndx = np.arange(0,lbls.max()+1)
factors = np.random.randint(10,size=3)
>>> lbls
array([[0, 0, 0],
[1, 1, 1],
[2, 2, 2]])
>>> ndx
array([0, 1, 2])
>>> factors
array([5, 4, 8])
def fn(a, x):
return a*x
>>> b = ndimage.labeled_comprehension(a, labels=lbls, index=ndx, func=fn, out_dtype=float, default=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/tgrant/anaconda/envs/python2/lib/python2.7/site-packages/scipy/ndimage/measurements.py", line 416, in labeled_comprehension
do_map([input], temp)
File "/Users/tgrant/anaconda/envs/python2/lib/python2.7/site-packages/scipy/ndimage/measurements.py", line 411, in do_map
output[i] = func(*[inp[l:h] for inp in inputs])
TypeError: fn() takes exactly 2 arguments (1 given)
予想されたように、それは何とかそれに供給fn()
ニーズfactors
ので、エラーを与えます。 labeled_comprehensionはこれを行うことができますか?要因に
ああ、そう単純で動作するようには思えません。それを答えると私はそれを受け入れるでしょう。ありがとうございました! – tomerg