我想爲numpy數組的每一行選擇特定的列元素。例如,在下面的例子:從數組中選擇每一行中的特定列
In [1]: a = np.random.random((3,2))
Out[1]:
array([[ 0.75670668, 0.1283942 ],
[ 0.51326555, 0.59378083],
[ 0.03219789, 0.53612603]])
我想選擇第一行的第一個元素,第二行的第二元素,和第三行的第一個元素。於是,我就做到以下幾點:
In [2]: b = np.array([0,1,0])
In [3]: a[:,b]
但是,這將產生以下輸出:
Out[3]:
array([[ 0.75670668, 0.1283942 , 0.75670668],
[ 0.51326555, 0.59378083, 0.51326555],
[ 0.03219789, 0.53612603, 0.03219789]])
這顯然不是我所期待的。有沒有簡單的方法來做我想做的事情而不使用循環?
確實。 *切片*保留給定的軸原樣,而您要求的兩個維度在文檔中稱爲*花式索引*。 – dwf 2010-01-21 23:36:17
對。例如,'a [0:2,0:2]'和'a [[0,1],[0,1]]'返回不同的東西。 – 2010-01-24 04:31:54