问题描述
我有一个numpy数组,我想在其中删除数据中的任何零值。这些可能发生多次,所以我不能使用remove(),我不能使用pop()因为我不想重复的值,并且我不能使用del因为numpy数组是不可变的。我在网上看到了一个可以在下面看到的示例,该示例可以运行,但是(由于要使用的数据是动态且不断变化的),在这种情况下该示例不起作用,因为有更多的索引需要消除。基本上,我需要一个相同数组的副本,但是要删除n个索引。
#What was seen online
b = np.delete(a,[2,3,6])
#My current code
for i in range(487):
if initial[i] == 0:
newInitial[i] = np.delete(initial,i)
newSum = np.delete(summary,[0,i])
else:
pass
for i in range(487):
if final[i] == 0:]
newFinal = np.delete(final,[-1,i])
else:
pass
for i in range(3):
for j in range(487):
if middle[i,j] == 0:
newMid = np.delete(middle,[i,j])
newSum = np.delete(summary,[i+1,j])
else:
pass
for i in range(487):
if summary[0,i] == 0:
newSum = np.delete(summary,i])
newInitial = np.delete(initial,i)
else:
pass
for i in range(487):
if summary[-1,i]:
newSum = np.delete(summary,i])
newFinal = np.delete(final,i)
else:
pass
for i in range(3):
for j in range(487):
if summary[i+1,j] == 0:
newSum = np.delete(summary,j])
newMid = np.delete(middle,j])
else:
解决方法
也许如果您使用命令del
例如:
list = [1、2、3、4、5]#声明一个数字列表
del list [1]#删除数组列表的元素编号1
del list [0:3]#删除数组(star:end)的间隔0→3中的所有这些元素