微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:如何从数组中删除值 基于价值:基于索引:

如何解决Python:如何从数组中删除值 基于价值:基于索引:

我的代码中有这个数组,但是我需要删除包含零的行(在这种情况下是第三行和第四行)。我尝试了一些选择,但都没有成功,有人可以建议我解决这个问题吗?

我留在数组下方:

print(AA)
array([[2.40258090e+01,5.46388441e+00],[2.37367092e+01,1.63425169e+02],[0.00000000e+00,1.56246202e-01],[1.68035590e+01,0.00000000e+00],[1.06032437e+01,6.41505749e+00]])

解决方法

基于价值:

要按值过滤数组,可以使用布尔掩码:

a[(a[:,0] != 0) & (a[:,1] != 0)]

此过滤器数组 a 仅保留列 0 1 中的值不为零的行;使用按位 & 运算符。

基于索引:

对于 numpy 数组,使用 np.delete 可以解决问题,如:

np.delete(a,[2,3],axis=0)

其中 a 是数组。

记住,索引是从零开始的,所以第三和第四行 (axis=0) 被索引为 [2,3]

Documentation

,

所以python没有对数组的内置支持。请使用列表。

为了回答您的问题,让我们创建一个列表:

lst =   [[2.40258090e+01,5.46388441e+00],[2.37367092e+01,1.63425169e+02],[0.00000000e+00,1.56246202e-01],[1.68035590e+01,0.00000000e+00],[1.06032437e+01,6.41505749e+00]]

# Now we filter
filtered_lst = [elem for elem in lst if 0 not in elem]
print(filtered_lst)

输出:

[[24.025809,5.46388441],[23.7367092,163.425169],[10.6032437,6.41505749]]

这就是你想要的吗?

,

使用基本 Python 删除带有 0 的行的一种方法

j=1
while j<len(a):
    for i in a[j]:
        if i == 0.0:
            a.remove(a[j])
            j-=1
    j+=1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。