閲覧ありがとうございます。
タイトルの通り、条件を満たすテンソルを抽出したいと考えております。
具体的には3行めが"0"の列を抽出したいです。
普通の配列なら、リスト内包表記を用いて下記の様に抽出できます。
python
1>>> li=[[1, 2, 0], [3, 4, 1], [5, 6, 0], [7, 8, 0]] 2>>> li = [row for row in li if row[2] == 0] 3>>> li 4[[1, 2, 0], [5, 6, 0], [7, 8, 0]]
しかしながら、同様の機能をpytorchのtensorに対して実行することができません。
tolistメソッドを用いてもリストにならず、無理やり内包表記を使うとリスト内にtensorが3つ入ってしまいます。
Python
1>>> import torch 2 3>>> a = torch.tensor([[1, 2, 0], [3, 4, 1], [5, 6, 0], [7, 8, 0]]) 4>>> a 5tensor([[1, 2, 0], 6 [3, 4, 1], 7 [5, 6, 0], 8 [7, 8, 0]]) 9 10>>> a.tolist() 11[[1, 2, 0], [3, 4, 1], [5, 6, 0], [7, 8, 0]] 12>>> a #リストにならず? 13tensor([[1, 2, 0], 14 [3, 4, 1], 15 [5, 6, 0], 16 [7, 8, 0]]) 17 18>>> a = [row for row in a if row[2] == 0] 19>>> a #リスト内にtensorが3つ入ってしまった 20[tensor([1, 2, 0]), tensor([5, 6, 0]), tensor([7, 8, 0])] 21 22>>> a = torch.tensor(a) #無理やりtensorに戻そうとしてもうまくいかず... 23Traceback (most recent call last): 24 File "<stdin>", line 1, in <module> 25TypeError: only integer tensors of a single element can be converted to an index
どなたかtensorに対して任意の行を抽出する方法をご存知でしたら、お教えください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/27 00:54