Python 如何为有布尔值的张量中的行应用条件

Python 如何为有布尔值的张量中的行应用条件,python,pytorch,tensor,Python,Pytorch,Tensor,我有以下张量: predictions = torch.tensor([[ True, False, False], [False, False, True], [False, True, True], [ True, False, False]]) 我沿着轴应用了如下条件 new_pred= [] if predict

我有以下张量:

predictions = torch.tensor([[ True, False, False],
                            [False, False,  True],
                            [False,  True,  True],
                            [ True, False, False]])
我沿着轴应用了如下条件

new_pred= []

if predictions == ([True,False,False]):
       new_pred = torch.Tensor(0)
if predictions == ([False,False,True]):
       new_pred = torch.Tensor(2)
if predictions == ([False,True,True]):
       new_pred = torch.Tensor(2)
因此,我希望最终输出(new_pred)为: 张量([0,2,2,0])


但是我得到了一个新的pred张量的空白[]。我认为我的逻辑一定有缺陷,因为新的pred中没有存储任何东西。有人能帮我准确地写出这个逻辑吗

预测的类型是
torch.Tensor
([True,False,False])
是一个列表,首先,你必须确保双方的类型相同

predictions==torch.tensor([True,False,False])
>>>张量([[真,真,真],
[假,真,假],
[假,假,假],
[对,对,对]]
然后,您仍然在比较二维张量和一维张量,这在
if
语句中是不明确的,解决这一问题的简单方法是为
循环编写
,将
预测的每一行与条件进行比较,并将结果附加到
新的\u pred
列表中。请注意,您将比较两个大小为3的布尔张量,因此,您必须确保所有单元格的比较结果均为
True

predictions=torch.tensor([[True,False,False],
[假,假,真],
[假,真,真],
[对,错,错]]
条件=火炬张量([[真,假,假],
[假,假,真],
[假、真、真]]
新预测=[]
对于范围内的索引(预测.大小(0)):
如果(预测[索引]==条件[0])。全部()
新的\u predict.append(0)
# ...

或者,您可以使用切片来实现预期结果,而无需任何
for
循环

请提供一个。嗨,穆罕默德,你能在一个示例代码中告诉我如何做for循环。对不起,我是python新手,不熟悉for循环;你可能应该先阅读教程,然后再继续下一步的工作,因为从现在开始,这将是一个艰难的过程。嗨,穆罕默德,谢谢你。是的,我肯定会阅读更多的教程和观看更多的视频,但你的例子让事情变得非常清楚。