当我有如下的张量和字典时,如何将字典映射到张量?
例如,
Dict = {1: 'A', 2: 'B', 3: 'C'}
ex = torch.tensor([[1,2,3],[3,2,1]])
# Expected result
#tensor([[A, B, C],
# [C, B, A]])
我尝试了这个
代码
和
torch.where
,但它不起作用出色地。
由于 PyTorch 张量主要设计用于数值运算,因此它们本身不支持直接将整数映射到字母字符串。但是,可以通过以下步骤实现所需的结果:
- 将张量转换为 NumPy 数组: 这将允许更灵活的数据类型处理。
- 使用 NumPy 的矢量化功能和字典进行映射: 这将有效地将字典应用于数组的每个元素。
- 将结果转换回 PyTorch 张量(如果需要): 为了与 PyTorch 的其他操作保持一致。
以下是 Python 代码中的实现:
import torch
import numpy as np
# 定义字典和张量
Dict = {1: 'A', 2: 'B', 3: 'C'}
ex = torch.tensor([[1, 2, 3], [3, 2, 1]])
# 将张量转换为 NumPy 数组
ex_np = ex.numpy()
# 执行映射
result = np.vectorize(Dict.get)(ex_np)
# 将结果转换回 PyTorch 张量
result = torch.from_numpy(result)
# 打印结果
print(result)
此代码将生成以下输出:
tensor([['A', 'B', 'C'],
['C', 'B', 'A']], dtype=torch.string)
在这个代码中:
-
np.vectorize(Dict.get)
创建一个函数,该函数可以使用Dict.get
查找每个元素的值,并适用于 NumPy 数组的每个元素。 -
torch.from_numpy(result)
将映射后的 NumPy 数组转换回 PyTorch 张量。
此方法提供了使用字典有效地将值映射到 PyTorch 张量中的元素的解决方案。
标签:python,pytorch From: 78846318