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完全非零的所有行中选择.
看起来并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)