如何调用单个NumPy函数获取指定格式的多维数组所有索引?
NumPy获取指定形状数组所有索引的实现方案
你需要的是形状为(3,2)的数组的行优先排列的全量多维索引,目前有几种简洁的实现方式:
- 写法1:用
np.argwhere单函数调用即可得到匹配结果
代码示例:
输出和你给出的np.argwhere(np.ones((3, 2), dtype=bool))[[x, y] for x, y in np.ndindex((3, 2))]结果完全一致。 - 写法2:直接转换
np.ndindex迭代器,语义更清晰
代码示例:
这种写法可读性更高,一眼就能看出是生成指定形状的所有多维索引。np.array(list(np.ndindex(3, 2))) - 写法3:对
np.indices的输出做简单变换
代码示例:
不需要生成辅助数组,适合处理大尺寸数组的场景。np.indices((3, 2)).reshape(2, -1).T
目前NumPy没有原生的无额外参数依赖的单个函数直接返回该格式的索引数组,上述三种都是社区通用的成熟实现,性能都可以满足绝大多数使用场景的需求。
内容的提问来源于stack exchange,提问作者Paul Jurczak
相关产品推荐
相关产品推荐

