Python 删除数组中的连续元素
给定一个带有排序整数的数组。我想删除数组中的连续数字。例如:Python 删除数组中的连续元素,python,numpy,Python,Numpy,给定一个带有排序整数的数组。我想删除数组中的连续数字。例如: import numpy as np array = np.array([1,2,3,6,9,13,14,15,20,25]) Expected output: [3,6,9,13,15,20,25] 您给出的预期输出有点含糊不清,为什么包含13个而不包含1个 无论如何,一个接近您所需的解决方案是: output = array[0:-1][array[1:]-array[0:-1] != 1] 我们开始: mask_array
import numpy as np
array = np.array([1,2,3,6,9,13,14,15,20,25])
Expected output:
[3,6,9,13,15,20,25]
您给出的预期输出有点含糊不清,为什么包含13个而不包含1个 无论如何,一个接近您所需的解决方案是:
output = array[0:-1][array[1:]-array[0:-1] != 1]
我们开始:
mask_array = np.diff(array, append=False)==1 #
if len(mask_array)>1:
mask_array[-1] = mask_array[-2]
array[~mask_array]
输出:
array([ 3, 6, 9, 15, 20, 25])
您还可以使用以下选项:
def filter(array):
new_array = []
for i in range(len(array) - 1):
if array[i+1] - array[i] != 1:
new_array.append(array[i])
if array[-1] - array[-2] != 1:
new_array.append(array[-1])
return new_array
第一个
1
的规则是什么?如果它是序列的一部分,请删除第一个值(此处:1)。否则,保留它。为什么保留13?array[1:]-array[0:-1]==np.diff(array)