Python/Numpy 子数组选择
Python/Numpy subarray selection
我有一些 Numpy 代码正在尝试破译。有一行 v1 = v1[:, a1.tolist()]
传递一个 numpy 数组 a1
并将其转换为列表。我对 v1[:, a1.tolist()]
的实际作用感到困惑。我知道 v1
现在被设置为由选择 [:, a1.tolist()]
给出的 v1
给出的列数组,但是选择了什么?更准确地说,[:, a.tolist()]
在做什么?
如果将您观察到的语法分成两部分,则更容易理解:
1。使用列表作为索引
与numpy的意思
a[[1,2,3]]
是
[a[1], a[2], a[3]]
换句话说,使用列表作为索引就像创建一个使用元素作为索引的列表。
2。选择带有 [:,x]
的列
的含义
a2[:, x]
是
[a2[0][x],
a2[1][x],
a2[2][x],
...
a2[n-1][x]]
即正在从矩阵中选择一列。
总结
的含义
a[:, [1, 3, 5]]
因此
[[a[ 0 ][1], a[ 0 ][3], a[ 0 ][5]],
[a[ 1 ][1], a[ 1 ][3], a[ 1 ][5]],
...
[a[n-1][1], a[n-1][3], a[n-1][5]]]
换句话说,a
的副本带有选定的列(或复制和重新排序;索引列表中的元素不需要区分或排序)。
假设一个像二维数组这样的简单示例,v1[:, a1.tolist()]
将选择 v1
的所有行,但仅选择 a1
值
描述的列
简单示例:
>>> x
array([['a', 'b', 'c'],
['d', 'f', 'g']],
dtype='|S1')
>>> x[:,[0]]
array([['a'],
['d']],
dtype='|S1')
>>> x[:,[0, 1]]
array([['a', 'b'],
['d', 'f']],
dtype='|S1')
我有一些 Numpy 代码正在尝试破译。有一行 v1 = v1[:, a1.tolist()]
传递一个 numpy 数组 a1
并将其转换为列表。我对 v1[:, a1.tolist()]
的实际作用感到困惑。我知道 v1
现在被设置为由选择 [:, a1.tolist()]
给出的 v1
给出的列数组,但是选择了什么?更准确地说,[:, a.tolist()]
在做什么?
如果将您观察到的语法分成两部分,则更容易理解:
1。使用列表作为索引
与numpy的意思
a[[1,2,3]]
是
[a[1], a[2], a[3]]
换句话说,使用列表作为索引就像创建一个使用元素作为索引的列表。
2。选择带有 [:,x]
的列
的含义
a2[:, x]
是
[a2[0][x],
a2[1][x],
a2[2][x],
...
a2[n-1][x]]
即正在从矩阵中选择一列。
总结
的含义a[:, [1, 3, 5]]
因此
[[a[ 0 ][1], a[ 0 ][3], a[ 0 ][5]],
[a[ 1 ][1], a[ 1 ][3], a[ 1 ][5]],
...
[a[n-1][1], a[n-1][3], a[n-1][5]]]
换句话说,a
的副本带有选定的列(或复制和重新排序;索引列表中的元素不需要区分或排序)。
假设一个像二维数组这样的简单示例,v1[:, a1.tolist()]
将选择 v1
的所有行,但仅选择 a1
值
简单示例:
>>> x
array([['a', 'b', 'c'],
['d', 'f', 'g']],
dtype='|S1')
>>> x[:,[0]]
array([['a'],
['d']],
dtype='|S1')
>>> x[:,[0, 1]]
array([['a', 'b'],
['d', 'f']],
dtype='|S1')