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

问题描述

我有一个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中的所有这些元素

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...