说,我有一个numpy数组x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
和两个变量,即min = 3
和max = 7
。如果x
值超出0
和min
变量指定的范围,即max
,那么将>3 && <7
值设置为x_after = [0, 0, 0, 3, 4, 5, 6, 7, 0, 0]
的最有效方法是什么最终结果是{{1}}?
答案 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])
这会就地修改数组;如果需要,可以轻松制作副本。