程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了删除特定列包含某些值的行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决删除特定列包含某些值的行?

开发过程中遇到删除特定列包含某些值的行的问题如何解决?下面主要结合日常开发的经验,给出你关于删除特定列包含某些值的行的解决方法建议,希望对你解决删除特定列包含某些值的行有所启发或帮助;

我有一个数组,每行包含 8 个值:

data = np.array([[ 1,2,3,5,6,7,15,27],[ 5,10,12,23,52],[ 9,27,44]])

我想删除 data[:,2:5] 等于零的每一行(所以 2 和 5 之间的所有列都等于零)

我发现使用以下有效,但有点啰嗦,我无法真正扩展到更多列:

data_nonzero = np.delete(data,np.where(np.bitwise_and(np.bitwise_and((data[:,2]==0),(data[:,3]==0)),np.bitwise_and((data[:,4]==0),5]==0)) ) )[0],0)

我尝试过类似的方法:

new_a = np.delete(data,np.s_[:,2:5] == 0,axis=0)

但这似乎不起作用:

要删除的布尔数组参数 obj 必须是一维的

最好是检查每行 4 列的 2 个条件。类似的东西:

new_a = np.delete(data,np.where(np.s_[:,2:5] == 0 | np.s_[:,2:5] > 50000),axis=0)

解决方法

在这种特殊情况下,我只会使用布尔索引来否定您的条件,即

>>> data[(data[:,2:6] != 0).any(axis=1),...]
array([[ 1,2,3,5,6,7,15,27],[ 5,10,12,23,52]])

换句话说,您希望选择包含任何非零值的行。

,

我想出了一个解决方案:
data.csv 文件包含:

var1,var2,var3,var4,var5,var6,var7
x,x,x
x,65535,40,116,95,208,147,277,203,325,x

代码:

data = genfromtxt(filename[0],delimiter=',',skip_header=1)

print('------ Original data ------')
print(data[0:7,:])


new_a = np.delete(data,~np.any(data[:,2:5],axis=1),axis=0)
print('------ Rows where data[:,2:5] == 0 removed ------')
print(new_a[0:5,:])

new_b = np.delete(new_a,np.all(new_a[:,2:5] > 60000,2:5] > 60000 removed ------')
print(new_b[0:4,:])

结果:

------ Original data ------
[[x x 0.00 0.00 0.00 0.00 x]
[x x 0.00 0.00 0.00 0.00 x]
[x x 65535.00 65535.00 65535.00 65535.00 x]
[x x 0.00 40.00 116.00 3.00 x]
[x x 65535.00 95.00 208.00 2.00 x]
[x x 3.00 147.00 277.00 2.00 x]
[x x 2.00 203.00 325.00 2.00 x]]

------ Rows where data[:,2:5] == 0 removed ------
[[x x 65535.00 65535.00 65535.00 65535.00 x]
[x x 0.00 40.00 116.00 3.00 x]
[x x 65535.00 95.00 208.00 2.00 x]
[x x 3.00 147.00 277.00 2.00 x]
[x x 2.00 203.00 325.00 2.00 x]]

------ Rows where data[:,2:5] > 60000 removed ------
[[66.01 -46.05 0.00 40.00 116.00 3.00 x]
[66.01 -39.46 65535.00 95.00 208.00 2.00 x]
[66.01 -32.87 3.00 147.00 277.00 2.00 x]
[66.01 -26.28 2.00 203.00 325.00 2.00 x]]

大佬总结

以上是大佬教程为你收集整理的删除特定列包含某些值的行全部内容,希望文章能够帮你解决删除特定列包含某些值的行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。