Python 如何删除未知数量的numpy数组索引?
我有一个numpy数组,我想在其中删除数据中的任何零值。这些可能会发生多次,因此我不能使用remove(),我不能使用pop(),因为我不希望重复值,我不能使用del,因为numpy数组是不可变的。我在网上看到了一个例子,可以在下面看到,这是可行的,但是(因为将使用的数据是动态的和不断变化的),在这种情况下,它不起作用,因为需要消除的索引不止这些。基本上,我需要一个相同数组的副本,但是删除了n个索引Python 如何删除未知数量的numpy数组索引?,python,arrays,loops,multidimensional-array,del,Python,Arrays,Loops,Multidimensional Array,Del,我有一个numpy数组,我想在其中删除数据中的任何零值。这些可能会发生多次,因此我不能使用remove(),我不能使用pop(),因为我不希望重复值,我不能使用del,因为numpy数组是不可变的。我在网上看到了一个例子,可以在下面看到,这是可行的,但是(因为将使用的数据是动态的和不断变化的),在这种情况下,它不起作用,因为需要消除的索引不止这些。基本上,我需要一个相同数组的副本,但是删除了n个索引 #What was seen online b = np.delete(a, [2,3,6])
#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,i)
newSum = np.delete(summary,[-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,[0,i])
newInitial = np.delete(initial,i)
else:
pass
for i in range(487):
if summary[-1,i]:
newSum = np.delete(summary,[-1,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,[i+1,j])
newMid = np.delete(middle,[i,j])
else:
也许如果你使用del命令 例如: list=[1,2,3,4,5]#声明一个数字列表 del list[1]#删除数组列表中的元素编号1
删除列表[0:3]#删除间隔0的所有这些元素→ 阵列的3个(星:结束)感谢您的回复!但这在我的例子中不起作用,因为它是一个numpy数组,我不知道要删除的索引。你能提供示例输入和输出吗?我不能使用del,因为numpy数组是不可变的。你能解释一下你的意思吗?@AMC当然可以,因为numpy数组是声明大小的,我不能只是“擦除”值,因为会出现一个错误,说你不能删除numpy数组元素。相反,您可以创建一个不包含这些元素的复制数组,但我只看到一个元素被排除的示例,而我的脚本需要n个排除的元素。除非我遗漏了什么,否则您不能使用简单的掩码来选择非零值吗?@AMC我不熟悉掩码,您介意解释一下吗?请看,这可能有助于澄清问题。