Python - numpy.delete不起作用

时间:2015-03-26 18:43:45

标签: python numpy

我正在尝试通过numpy.delete()命令从.xyz文件中删除一行,但是无效。

下面的

是代码问题的一部分。代码可以正常工作而不会出现任何错误,但不会删除该行。

谢谢!

import numpy
import os

####################################################
a = numpy.loadtxt("0000_seg.xyz")
max_xyz = a.max(axis=0)
min_xyz = a.min(axis=0)
print max_xyz
print min_xyz
####################################################
ponto = numpy.loadtxt("0000_poucos.xyz")
####################################################

arquivos = os.listdir('/home/caye/Documentos/python/pontos')

print 'tamanho antes'
print len(ponto)

for arquivo in arquivos:
    try:
    for i in range(0,len(ponto)):
        for j in range(3):
            if ponto[i,j] > max_xyz[j]:
                print 'del max'
                numpy.delete(ponto, i)
            if ponto[i,j] < min_xyz[j]:
                print 'del min'
                numpy.delete(ponto, i)

    except:
        pass


print 'tamanho depois'
print len(ponto)

1 个答案:

答案 0 :(得分:2)

numpy.delete() 就地操作,并返回已操作的数组的新副本。因此,ponto本身永远不会更改,您只需返回它的更改副本,并且不对其执行任何操作。为您的numpy.delete()语句分配一个新变量,并打印出来。 另请注意,try-except-pass本质上是邪恶的,事实上你可能在代码中有100个错误而不知道它会隐藏所有错误。

您可以找到有关numpy.delete的文档,该文档解释了此行为here