[英]remove certain elements from numpy array without destroying the structure
我有一个numpy数组如下,我想删除所有零。
a = [[ 5 2 0 9 4]
[ 2 0 9 4 2]
[ 0 9 4 2 6]
[ 9 4 2 6 8]
[ 4 2 6 8 0]
[ 2 6 8 0 3]
[ 6 8 0 3 11]
[ 8 0 3 11 7]
[ 0 3 11 7 1]
[ 3 11 7 1 5]
[11 7 1 5 21]
[ 7 1 5 21 8]
[ 1 5 21 8 0]
[ 5 21 8 0 18]
[21 8 0 18 12]
[ 8 0 18 12 3]
[ 0 18 12 3 9]]
删除全零后我想要的如下:
b = [[ 5 2 9 4]
[ 2 9 4 2]
[ 9 4 2 6]
[ 9 4 2 6 8]
[ 4 2 6 8]
[ 2 6 8 3]
[ 6 8 3 11]
[ 8 3 11 7]
[ 3 11 7 1]
[ 3 11 7 1 5]
[11 7 1 5 21]
[ 7 1 5 21 8]
[ 1 5 21 8]
[ 5 21 8 18]
[21 8 18 12]
[ 8 18 12 3]
[18 12 3 9]]
我尝试a[a>0]
但它返回了1D阵列: [ 5 2 9 4 2 9 4 2 9 4 2 6 9 4 2 6 8 4 2 6 8 2 6 8 3 6 8 3 11 8 3 11 7 3 11 7 1 3 11 7 1 5 11 7 1 5 21 7 1 5 21 8 1 5 21 8 5 21 8 18 21 8 18 12 8 18 12 3 18 12 3 9]
。 我想知道是否有这样的命令a[a>0,axis=1]
删除所有的零而不破坏它的结构?
结果数组不能是numpy数组,因为它的形状不是常量。 因此,一个可能的解决方案是以标准的pythonic方式:
b = [row[row>0] for row in a]
如果每列中的零个数字完全相同,您似乎想要删除零。 请注意,在您的示例中,这不可能。
b=np.hstack([y.reshape((len(y),1)) for y in [x[x>0] for x in [a[:,i] for i in range(a.shape[1])]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.