Python NumPy中如何按索引数组从源数组提取元素生成目标数组
按索引数组从NumPy数组取值的实现
该需求属于NumPy整数数组索引(俗称“花式索引”)的典型应用场景,无需手动编写元素遍历循环即可直接实现取值,具体实现方式如下:
- 最简洁实现:直接将存储索引的数组
k作为下标传入原数组p,NumPy会自动遍历k中的每个整数作为位置标记,依次从p中取出对应位置的元素,最终生成的数组形状、长度与k完全一致:
运行验证:want = p[k]print(want) # 输出结果:[0.3 0.2 0.1 0.2],与预期目标数组完全匹配 - 等价实现:也可以使用NumPy内置的
np.take函数完成相同的取值逻辑,在当前一维数组场景下,返回结果和上述写法完全一致:want = np.take(p, k)
使用注意:通过这类整数数组索引取值时,需要保证k中的所有元素都是p的合法下标(即取值范围在0 ~ len(p)-1之间),否则会触发索引越界的运行错误。
内容的提问来源于stack exchange,提问作者Ku-trala
相关产品推荐
相关产品推荐

