我正在尝试通过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)
答案 0 :(得分:2)
numpy.delete()
不 就地操作,并返回已操作的数组的新副本。因此,ponto
本身永远不会更改,您只需返回它的更改副本,并且不对其执行任何操作。为您的numpy.delete()
语句分配一个新变量,并打印出来。
另请注意,try-except-pass
本质上是邪恶的,事实上你可能在代码中有100个错误而不知道它会隐藏所有错误。
您可以找到有关numpy.delete
的文档,该文档解释了此行为here。