记录一些在看代码时遇到的一些问题及博客,方便以后忘记时回来

知乎收藏夹:

csdn收藏夹:

模型save and load:

命令行参数:

cuda版本:

Python装饰器:

Thread:

argparse:

Numpy 切片:

From ChatGPT:

Pi[:, [1, 2, 0]] 中,方括号 [] 表示一个数组(或列表),其元素是要选择的列的索引。这是 NumPy 中常用的一种高级索引方法,允许你指定想要选择的多个列或行,并按照你指定的顺序进行排列。

高级索引的解释

在 NumPy 中,有两种索引方式:基本索引高级索引。基本索引类似于 Python 的切片操作,如 Pi[:, 1],选择所有行的第1列。高级索引则更为灵活,它允许使用数组(或列表)来指定索引的集合,并且可以改变元素的顺序。

具体来说:

  • Pi[:, 1] 会选择数组 Pi 的所有行的第1列,返回一个一维数组。
  • Pi[:, [1, 2]] 会选择数组 Pi 的所有行的第1列和第2列,返回一个二维数组,其中包含这两列的数据。
  • Pi[:, [1, 2, 0]] 不仅选择了特定的列,还按照 1, 2, 0 的顺序重新排列这些列。这个列表 [1, 2, 0] 指定了新的列顺序。

举例说明

假设你有一个二维数组:

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

使用 array[:, [2, 0, 1]],我们期望得到一个新的数组,其中列的顺序重新排列为 [2, 0, 1],即:

1
2
3
4
5
6
7
8
array[:, [2, 0, 1]]

# 输出:
array([
[3, 1, 2],
[6, 4, 5],
[9, 7, 8]
])

在这个操作中:

  • 2 表示选择原数组的第2列(第三列)。
  • 0 表示选择原数组的第0列(第一列)。
  • 1 表示选择原数组的第1列(第二列)。

最终生成的数组 array[:, [2, 0, 1]] 的列顺序就变成了 [3, 1, 2][6, 4, 5],和 [9, 7, 8]

通过这种方式,你可以非常灵活地选择和重新排列数组中的行或列。