需要帮助来了解此Python列表语法

时间:2020-04-22 02:51:07

标签: python pytorch

我在理解此语法在Python中的含义时遇到了麻烦:

out = out[lengths - 1, range(len(lengths))]

为什么列表内有一个范围?这是如何运作的?对于上下文,我正在PyTorch中训练机器学习模型。 lengths是输入长度的列表。

1 个答案:

答案 0 :(得分:3)

我假设lengths是一个整数数组。 (可能是一个Numpy数组)

第一个索引lengths - 1将给出由-1减去的索引列表。 第二个索引range(len(lengths))将给出从0到lengths大小的数字列表。

我不知道代码中的特定逻辑是什么,但是一般来说,您可以提供一个索引列表,以选择特定位置的数据。

out = np.array([[1,2,3],[4,5,6],[7,8,9]])
-> array([[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]])

first_idx = [0, 1, 2]
second_idx = [2, 1, 0]
# (0,2), (1,1), (2,0)

out[first_idx, second_idx]
-> array([3, 5, 7])