2017-06-06 3 views
2

私は[n、m]入力と[n、m]ブールマスクを持っています。 [x]配列の代わりに[n、x]フィルタリングされた行列を出力するにはどうすればよいですか?例えば
、入力出力2d booleanマスク値(テンソルフロー)

x = [[1,2,3],[4,5,6]] 

ブールマスク

bm = [[1,0,1],[1,0,0]] 

Iはtf.boolean_mask使用しようとした()とIが得た[1,3,4]。 はどうすれば

result = [[1,3],[4]] 

おかげのような2D結果を得ることができます!

答えて

1

TFはテンソルで動作し、テンソルを返すため、この操作はTFには存在しませんでした。あなたが受け取った結果は、テンソルではなく要素の数が異なります。

+0

あなたがセンチネル値を使用しない限り、最良のことは1dテンソルです。 – Alex

0

TFでこれを行う方法はありません。ただし、numpyでMasked Arrayを使用することを検討することができます。

>>> import numpy as np, numpy.ma as ma 
>>> x = ma.array([1., -1., 3., 4., 5., 6.], mask=[0,0,0,0,1,0]) 
>>> y = ma.array([1., 2., 0., 4., 5., 6.], mask=[0,0,0,0,0,1]) 
>>> print np.sqrt(x/y) 
[1.0 -- -- 1.0 -- --] 
関連する問題