选择性否定数组中的元素

时间:2018-11-30 05:08:44

标签: python arrays numpy

我正在numpy中寻找有关“如何有选择地取反数组值”的帮助。

numpy.where()numpy.negative已经尝试过,但无法对选定的少数几个实施条件。

import numpy as np

arr=np.arange(11)
arr

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

说我想对数组中所有2到8之间的元素求反。

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

5 个答案:

答案 0 :(得分:4)

使用按位与以创建掩码,然后乘以-1

m = (arr > 2) & (arr < 8)
arr[m] *= -1

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

答案 1 :(得分:2)

尝试一下:

condition = np.logical_and(arr >= 2, arr <= 8)
arr = np.select([~condition, condition], [arr, -arr])

答案 2 :(得分:0)

c = np.where((arr> 2)&(arr <8),arr * -1,arr)

答案 3 :(得分:0)

import numpy as np

arr = np.arange(11)

arr[3:9] = np.multiply(arr[3:9],-1)

print(arr)

答案 4 :(得分:0)

为什么不呢?

a = np.random.random(size=10)
a[2:8] = np.negative(a[2:8])