Python:如何从数组中删除值
我的代码中有这个数组,但是我需要删除包含零的行(在本例中是第三行和第四行)。我尝试了一些选择,但都没有成功,有人能给我一些建议来解决这个问题吗 我在数组下面留下:Python:如何从数组中删除值,python,arrays,numpy,numpy-ndarray,Python,Arrays,Numpy,Numpy Ndarray,我的代码中有这个数组,但是我需要删除包含零的行(在本例中是第三行和第四行)。我尝试了一些选择,但都没有成功,有人能给我一些建议来解决这个问题吗 我在数组下面留下: 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
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]
因此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
j=1
而jIt不会,因为在第1行之前没有将numpy导入为np
。还有,是什么告诉你他在使用numpy的?语法array([[…])
是标准的numpy.ndarray
。此外,标签是一个明确的指示。是的,你是对的。我想你比我更了解numpy。这能回答你的问题吗?代码转储不能得到好的答案。您应该解释这是如何以及为什么解决他们的问题的。我建议你读书。”