比如,数组X为
X = [ 1 2 3 4 5 6 7 8 9 ] X=\left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] X=⎣⎡147258369⎦⎤
我们需要选取第1行第2列,第2行第2列和第3行第3列这三个数,组成一个新的数组
import numpy as np
X = np.array([[1,2,3],[4,5,6],[7,8,9]])
y = np.array([1,1,2])
z = X[np.arange(3),y]
print(z)
print(z.shape)
得到以下结果
[2 5 9]
(3,)
得到的z是rank 1的数组,在吴恩达的神经网络和深度学习课中他有提到,这种rank 1数组的运算结果有时会跟直觉冲突,在编写神经网络程序时,尽量不要使用这种数组。
实际上,z是rank 1数组的原因在于y以及np.arange(3)都是一个rank 1的数组。打印一下y和np.arange(3)的shape。
import numpy as np
X = np.array