【问题标题】:Need help understanding this Python list syntax需要帮助理解这个 Python 列表语法
【发布时间】:2020-04-22 11:24:45
【问题描述】:

我无法理解这种语法在 Python 中的含义:

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

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

【问题讨论】:

  • 请定义outinput,或提供您所指的链接。
  • 这不是一个列表。

标签: python pytorch


【解决方案1】:

我假设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])

【讨论】:

  • 聪明!非常感谢。
猜你喜欢
  • 2012-07-11
  • 2019-08-11
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2016-07-08
  • 2016-04-01
相关资源
最近更新 更多