如何删除包含零的numpy数组中的行?

Ash*_*ton 8 python arrays numpy zero delete-row

我正在尝试编写一个函数来删除其中包含零值的所有行.这不是来自我的代码,而是我正在使用的想法的一个示例:

import numpy as np
a=np.array(([7,1,2,8],[4,0,3,2],[5,8,3,6],[4,3,2,0]))
b=[]

for i in range(len(a)):
    for j in range (len(a[i])):
        if a[i][j]==0:
            b.append(i)

print 'b=', b
for zero_row in b:
    x=np.delete(a,zero_row, 0)

print 'a=',a
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

b= [1, 3]
a= [[7 1 2 8]
 [4 0 3 2]
 [5 8 3 6]
 [4 3 2 0]]
Run Code Online (Sandbox Code Playgroud)

如何摆脱b中索引的行?对不起,我对此很新,任何帮助都会非常感激.

Fre*_*Foo 13

我正在尝试编写一个函数来删除其中包含零值的所有行.

您不需要为此编写函数,可以在单个表达式中完成:

>>> a[np.all(a != 0, axis=1)]
array([[7, 1, 2, 8],
       [5, 8, 3, 6]])
Run Code Online (Sandbox Code Playgroud)

读作:从a完全非零的所有行中选择.

  • `b = b [b!= 0]`删除`b`中的`0`.它被称为布尔索引. (2认同)

tux*_*fly 3

看起来并np.delete没有改变数组,只是返回一个新数组,所以

代替

x = np.delete(a,zero_row, 0)
Run Code Online (Sandbox Code Playgroud)

尝试

a = np.delete(a,zero_row, 0)
Run Code Online (Sandbox Code Playgroud)