删除不包含整数的numpy行

时间:2018-12-03 03:16:52

标签: python numpy

我有一个数组

a = np.array([[1, 2.0, 3],
              [1.23,2.5,3],
              [1,4.6,4.9]])

我想检查第二列中每个值的整数,如果是整数则保留该行。我已经尝试过了。

for i in range(0,len(a)):
    try:
        if a[i,1].is_integer()==False:
            a=np.delete(a,(i),axis=0)
    except IndexError:
        continue

输出:

array([[1. , 2. , 3. ],
       [1. , 4.6, 4.9]])

所需的输出: array([[1. , 2. , 3. ]])

失败原因::删除一行后,下面的i行将向上移动。无需使用delete即可获得所需的输出。

2 个答案:

答案 0 :(得分:4)

您可以使用np.floor,如下所示:

output = a[a[:, 1] == np.floor(a[:, 1])]

或者,您可以使用astype(int),如下所示:

output = a[a[:, 1] == a[:, 1].astype(int)]

希望有帮助。

答案 1 :(得分:4)

output = a[np.mod(a[:, 1], 1) == 0]