为了账号安全,请及时绑定邮箱和手机立即绑定

使用一个numpy数组作为另一个数组的第二个DUMP的索引?

使用一个numpy数组作为另一个数组的第二个DUMP的索引?

回首忆惘然 2019-07-11 12:39:11
使用一个numpy数组作为另一个数组的第二个DUMP的索引?例如,我有两个numpy数组,A = np.array(   [[0,1],     [2,3],     [4,5]])B = np.array(   [[1],    [0],    [1]], dtype='int')的每一行中提取一个元素。A,而该元素的索引是B,所以我希望得到以下结果:C = np.array(   [[1],    [2],    [5]])我试过A[:, B.ravel()],但它会播放B不是我想要的。也调查了np.take似乎不是解决我问题的正确办法。但是,我可以用np.choose转置A,np.choose(B.ravel(), A.T)但还有其他更好的解决办法吗?
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

你可以用NumPy's purely integer array indexing -

A[np.arange(A.shape[0]),B.ravel()]

样本运行-

In [57]: AOut[57]: array([[0, 1],
       [2, 3],
       [4, 5]])In [58]: BOut[58]: array([[1],
       [0],
       [1]])In [59]: A[np.arange(A.shape[0]),B.ravel()]Out[59]: array([1, 2, 5])

请注意如果B1D数组或此类列索引的列表,您可以简单地跳过以下操作.ravel().

样本运行-

In [186]: AOut[186]: array([[0, 1],
       [2, 3],
       [4, 5]])In [187]: BOut[187]: [1, 0, 1]In [188]: A[np.arange(A.shape[0]),B]Out[188]: array([1, 2, 5])


查看完整回答
反对 回复 2019-07-11
?
达令说

TA贡献1821条经验 获得超6个赞

C = np.array([A[i][j] for i,j in enumerate(B)])


查看完整回答
反对 回复 2019-07-11
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

如果我从问题中得到了预期的输出,你就不需要在这里广播了。我们基本上是使用整数在每个模糊,选择元素。我们有第二个模糊指数B,所以我们只需要为第一个DIM创建相应的np.arange..希望这是有意义的!

查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 1094 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信