Python 如何删除未知数量的numpy数组索引?

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])

我有一个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,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我不熟悉掩码,您介意解释一下吗?请看,这可能有助于澄清问题。