numpy 使用np.diff从数组中删除值

ozxc1zmp  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(149)

我需要编辑一个数组。该数组有两列。一列用于X值,另一列用于Y值。X值为0.0025步长(0、0.0025、0.005等),但有时会出现错误的步长,我需要删除这些步长。其他人建议我使用以下步长:

data = data[~np.r_[True, (np.diff(data[:,0])>0)&(np.diff(data[:, 0])<0.0024)]]

问题是第一个值总是被删除,第二个问题是它不只是删 debugging 误的步骤,但在它之后的一个太.

vxf3dgd4

vxf3dgd41#

第一个元素总是被删除的原因是因为你反转了np.r_的输出,它把True前置到np.diff的输出。当使用~时,它变成了False,因此第一个元素被删除。
我猜想后面的步骤也被删除了,因为np.diff检查连续元素之间的差异。

0.0025, 0.005, 0.008,  0.01, 0.0125
               ~~~~~
# The diff here is going to look like:
       0.0025, 0.003, 0.002, 0.0025

请注意错误的元素如何导致该元素之前和之后的错误diff。
如果这是意外行为,则不应使用np.diff,而是直接使用np.arange与预期步骤进行比较

import numpy as np

# Solution:
data[ np.isclose(data[:, 0], np.arange(start, stop, 0.0025)) ]

# with I'm guessing start=0, and stop=data.shape[0]*0.0025

相关问题