|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题1.
对于list
X = [[1,2,3],[4,5,6]]
如何使用sum使得返回[5,7,9]呢?
问题2.
X.sum(dim=0)是不是要求X为tensor?我如何把list转换为tensor呢?
问题3.
有一个返回generator的函数f(x,k),然后可以求和:
sum(f(x,k) for x,k in zip(X,K))
为什么我无法让Y= (f(x,k) for x,k in zip(X,K)) 然后sum(Y)呢?
此外,如何将generator转换成tensor呢?
问题1.
对于list X = [[1, 2, 3], [4, 5, 6]],你可以使用列表推导式与zip函数将两个子列表相加,如下所示:
X = [[1, 2, 3], [4, 5, 6]]
result = [sum(x) for x in zip(*X)]
print(result) # 输出:[5, 7, 9]
问题2.
是的,X.sum(dim=0)需要X为一个tensor。你可以使用PyTorch将list转换为tensor,如下所示:
import torch
X = [[1, 2, 3], [4, 5, 6]]
X_tensor = torch.tensor(X) # 将list转换为tensor
result = X_tensor.sum(dim=0) # 沿着第0个维度求和
print(result) # 输出:tensor([5, 7, 9])
问题3.
首先,回答你关于为什么不能使用以下代码的问题:
Y = (f(x, k) for x, k in zip(X, K))
sum(Y)
这是因为当你将生成器赋值给Y时,它仅仅是一个生成器对象,而不是一个实际的序列。当你尝试对其求和时,你需要将生成器转换为一个可迭代的对象。你可以将生成器转换为列表,然后对其求和,如下所示:
Y = (f(x, k) for x, k in zip(X, K))
result = sum(list(Y))
此外,要将生成器转换为tensor,你可以使用torch.tensor()函数将生成器转换为一个列表,然后将该列表转换为tensor:
import torch
Y = (f(x, k) for x, k in zip(X, K))
Y_tensor = torch.tensor(list(Y)) # 将生成器转换为tensor
|
|