重置不符合指定条件的值

时间:2015-01-09 13:04:18

标签: python numpy scipy

说,我有一个numpy数组x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]和两个变量,即min = 3max = 7。如果x值超出0min变量指定的范围,即max,那么将>3 && <7值设置为x_after = [0, 0, 0, 3, 4, 5, 6, 7, 0, 0]的最有效方法是什么最终结果是{{1}}?

2 个答案:

答案 0 :(得分:3)

您可以使用numpy.where

>>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(np.logical_or(x<3, x>7), 0, x)
array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0])
#or without `np.logical_or` call.
>>> np.where((x < 3) | (x > 7), 0, x)
array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0]

答案 1 :(得分:2)

由于您已使用numpy标记了问题,因此这是一个NumPy解决方案:

In [19]: x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [20]: min_val, max_val = 3, 7

In [21]: x[(x < min_val) | (x > max_val)] = 0

In [22]: x
Out[22]: array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0])

这会就地修改数组;如果需要,可以轻松制作副本。