Python/Numpy子阵列选择

Bla*_*ack 7 python arrays numpy

我有一些Numpy代码,我试图破译.有一条线v1 = v1[:, a1.tolist()]传递一个numpy数组a1并将其转换为一个列表.我对v1[:, a1.tolist()]实际做的事感到困惑.我知道v1现在被设置v1为由选择给出的列数组[:, a1.tolist()]但是被选中的是什么?更确切地说,[:, a.tolist()]做什么?

650*_*502 11

如果将它拆分为两部分,则您观察到的语法更容易理解:

1.使用列表作为索引

numpy意思是

a[[1,2,3]]
Run Code Online (Sandbox Code Playgroud)

[a[1], a[2], a[3]]
Run Code Online (Sandbox Code Playgroud)

换句话说,使用列表作为索引就像创建使用元素列表作为索引一样.

2.选择列 [:,x]

的含义

a2[:, x]
Run Code Online (Sandbox Code Playgroud)

[a2[0][x],
 a2[1][x],
 a2[2][x],
 ...
 a2[n-1][x]]
Run Code Online (Sandbox Code Playgroud)

即从矩阵中选择一列.

加起来

的含义

a[:, [1, 3, 5]]
Run Code Online (Sandbox Code Playgroud)

因此

[[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]]]
Run Code Online (Sandbox Code Playgroud)

换句话说,a带有选择列的副本(或复制和重新排序;索引列表中的元素不需要是不同的或排序的).