我们假设a
和b
如下: -
a = np.arange(5)
b = [0,1,2]
我想要的是,对于排除b
中的索引的索引,a
中的值应该等于-1。
所以在上面的例子中
a
将等于
a = array([0, 1, 2, -1, -1])
我知道有一种方法,即
a[list(set(a)-set(b))] = -1
但是花费了太多时间,并且在实际编写代码时导致了太多的复杂性。 一如既往,我正在寻找比上述方法更好的方法。 随意使用所需的任何工具。 另一个例子(以防万一): - 如果
a = np.arange(12)
b = [3,5,6]
然后我真正想要的是
a = array([-1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, -1])
附:不要担心,a
的格式始终为np.arange(int)
,且b
的值不超过a
的长度
答案 0 :(得分:3)
>>> a = np.arange(12)
>>> b = [3,5,6]
>>> a[~np.in1d(np.arange(len(a)), b)] = -1
>>> a
array([-1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, -1])
答案 1 :(得分:3)
如果对象要创建一系列与其索引相同的值或-1,那么从所有-1开始并添加所需的数据可能更简单,而不是相反。< / p>
>>> a = np.full(12, -1, dtype=int)
>>> b = [3, 5, 6]
>>> a[b] = b
>>> a
array([-1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, -1])