我正在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])
答案 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])