首页 > 解决方案 > 用 1 替换 numpy 数组中的多个元素

问题描述

在给定的 numpy 数组中X

X = array([1,2,3,4,5,6,7,8,9,10])

我想分别替换索引(2, 3)(7, 8)单个元素-1,例如:

X = array([1,2,-1,5,6,7,-1,10])

换句话说,我用奇异值替换了索引(2, 3)(7,8)原始数组的值。

问题是:是否有一种 numpy-ish 方式(即没有 for 循环和使用 python 列表)?谢谢。

注意:这不等同于用另一个元素就地替换单个元素。它是关于用“单一”值替换多个值。谢谢。

标签: pythonarraysnumpy

解决方案


使用 的解决方案numpy.delete,类似于@pault,但更有效,因为它使用纯 numpy 索引。但是,由于这种高效的索引,这意味着您不能将锯齿状数组作为索引传递

设置

a = np.array([1,2,3,4,5,6,7,8,9,10])
idx = np.stack([[2, 3], [7, 8]])

a[idx] = -1
np.delete(a, idx[:, 1:])

array([ 1,  2, -1,  5,  6,  7, -1, 10])

推荐阅读