numpy实用技巧(一)
一维 ⇒ 二维
>> x = np.array([1, 2, 3])
>> x[:, None]
array([[1],
[2],
[3]])
>> x.reshpae((3, 1))
array([[1],
[2],
[3]])
>> x.reshape((-1, 1))
array([[1],
[2],
[3]])
使用两个一维数组实现对矩阵的索引(访问)
>> X = np.random.randn(5, 5)
>> X
array([[ 0.27123443, -0.59959405, -2.69614481, -1.05278817, -1.69272363],
[-1.12374238, 1.9421306 , -0.55876497, 0.38140204, 1.43101557],
[-0.26985812, -0.36234587, -0.67110573, -0.42532423, 0.40801116],
[ 0.31220293, -1.02321178, 0.55431012, 1.24932475, 0.83281044],
[ 0.72195019, -1.49367515, -1.38654615, 1.11307865, 0.4253789 ]])
>> y = np.random.randint(0, 5, 5)
array([4, 1, 0, 0, 0])
>> X[np.arange(X.shape[0]), y]
array([-1.69272363, 1.9421306 , -0.26985812, 0.31220293, 0.72195019])
# 构成的访问对
# 0, 4
# 1, 1
# 2, 0
# 3, 0
# 4, 0