例如,N * 2个输入matrix = torch.tensor([[1, 2], [2, 3],[4, 5]]), 由于第一行和第二行共享相同的元素2,所以期望的输出矩阵是torch.tensor([[1, 3],[4, 5]]).

如何做到这一点?先谢谢你.

推荐答案

您可以标识0中的值与1中的前一行不同的行,并丢弃其他行:

mask = matrix[1:,0]!=matrix[:-1,1]
# tensor([False,  True])

true = torch.tensor([True])

out = torch.column_stack([matrix[torch.cat((true, mask)), 0],
                          matrix[torch.cat((mask, true)), 1],
                         ])

变式:

mask = torch.cat((torch.tensor([True]),
                  matrix[1:,0]!=matrix[:-1,1]))
# tensor([ True, False,  True])

out = torch.column_stack([matrix[mask, 0],
                          matrix[mask.roll(-1), 1],
                         ])

输出:

tensor([[1, 3],
        [4, 5]])

更复杂的例子:

# input             # values to keep (X)
tensor([[1, 2],     #    X   -
        [2, 3],     #    -   -
        [3, 4],     #    -   X
        [0, 0],     #    X   X
        [5, 6],     #    X   -
        [6, 9]])    #    -   X

# output
tensor([[1, 4],
        [0, 0],
        [5, 9]])

Python相关问答推荐

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

Pydantic 2.7.0模型接受字符串日期时间或无

如何在msgraph.GraphServiceClient上进行身份验证?

DataFrame groupby函数从列返回数组而不是值

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

关于Python异步编程的问题和使用await/await def关键字

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

什么是最好的方法来切割一个相框到一个面具的第一个实例?

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

如何使用两个关键函数来排序一个多索引框架?

ConversationalRetrivalChain引发键错误

在Python中使用yaml渲染(多行字符串)

将一个双框爆炸到另一个双框的范围内

如何反转一个框架中列的值?

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

Python日志(log)库如何有效地获取lineno和funcName?

如何将一个文件的多列导入到Python中的同一数组中?

如何在微调Whisper模型时更改数据集?