numpy 粗略删除所有有条件的行

xcitsw88  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(120)

我必须编辑CSV文件。
我已经可以导入它并将其转换为2D数组
现在,我的工作是删除0.0005 < array[i, 0]%0.0025 < 0.9995所在的所有行。
(基本上,在第一列中,是间隔为0.0025的步骤,我需要删除所有行,其中一个步骤意外地大于其应有的大小)
我已经尝试了以下几种方法:

length = len(data)
for i in range data:
   if 0.0005 < data[i,0]%0.0025 < 0.9995:
     np.delete(data, i, 0)

但它并没有奏效。有人能帮帮我吗?

sgtfey8w

sgtfey8w1#

我发现您的方法有一些问题--首先,您不应该在迭代过程中删除元素的数组上进行迭代。其次,np.delete返回一个新的数组,并且不在适当的位置。因此,您对此方法的调用什么也不做。此外,您的范围定义中存在一个小语法错误
可能使用多条件索引

np.delete(data,(data[:,0]%0.0025>0.0005)&(data[:,0]%0.0025<0.9995),0)

我们可以通过一个示例来验证类似的问题:删除第一个元素x满足1<x<4的所有行(删除mod,因为它与示例无关):

data = np.array([[i, 2, 3] for i in range(1, 6)])
>>> [[1,2,3],[2,2,3],...,[5,2,3]]
data = np.delete(data, (data[:, 0] > 1) & (data[:, 0] < 4), 0)
>>> [[1,2,3],[4,2,3],[5,2,3]]

相关问题