猿问

用(n-1)d数组索引n维数组

用(n-1)d数组索引n维数组

使用(n-1)维数组访问给定维度的n维数组的最优雅方法是什么,如虚拟示例中所示。

a = np.random.random_sample((3,4,4))b = np.random.random_sample((3,4,4))idx = np.argmax(a, axis=0)

我现在如何访问idx a使极大值进入a好像我用过a.max(axis=0)?或如何检索idx在……里面b?

我想用np.meshgrid但我觉得这太过分了。注意尺寸axis可以是任何有用的轴(0,1,2)并且事先不知道。有什么好办法吗?


慕斯709654
浏览 378回答 3
3回答

桃花长相依

all_idx很好。我没有意识到使用argmax输出的形状而不是原始数组的形状会简化事情。至于元组而不是列表,高级索引语义与元组相比更加清晰。在这种情况下,列表的行为碰巧是一样的,这是因为在特定条件下,向后兼容性处理将列表转换为元组(但没有得到完全正确的记录)。在NumPy索引中,当一个列表被当作一个元组对待,当一个列表被当作一个数组处理时,这可能会令人惊讶,所以我更喜欢显式地创建这个元组。 

Smart猫小萌

作为参考,我指的向后兼容性处理是这里..案件idx是标量是我甚至没有想过的事情,在那里,向后兼容性处理不会被触发,如果我们保留一个列表而不是一个元组,就会出现错误的结果。正如这说明的,元组的行为更一致,更容易预测。 
随时随地看视频慕课网APP

相关分类

Python
我要回答