给定以下数组,我如何过滤以生成一个新数组,该数组包含的值至少小于下一个值3?换句话说,我需要将每个值与右边的相邻值进行比较,如果该相邻值高出3或更多,则将其添加到新数组中。
ex_arr = [1, 2, 3, 8, 9, 10, 12, 16, 17, 23] desired_arr = [3, 12, 17]
字符串
jm81lzqq1#
使用diff来比较连续的值并形成一个布尔掩码,向这个数组添加一个False(使用np.r_)来解释最后一个值并执行布尔索引:
diff
False
np.r_
ex_arr = np.array([1, 2, 3, 8, 9, 10, 12, 16, 17, 23]) desired_arr = ex_arr[np.r_[np.diff(ex_arr)>=3, False]]
字符串或者使用numpy.nonzero:
numpy.nonzero
desired_arr = ex_arr[np.nonzero(np.diff(ex_arr)>=3)[0]]
型输出:array([ 3, 12, 17])
array([ 3, 12, 17])
1条答案
按热度按时间jm81lzqq1#
使用
diff
来比较连续的值并形成一个布尔掩码,向这个数组添加一个False
(使用np.r_
)来解释最后一个值并执行布尔索引:字符串
或者使用
numpy.nonzero
:型
输出:
array([ 3, 12, 17])