Удалить пустые строки, которые не содержат целых чисел - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть массив

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

Я хочу проверить каждое значение во 2-м столбце на целое число и сохранить эту строку, если это целое число.Я пробовал это.

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 голосов
/ 03 декабря 2018
output = a[np.mod(a[:, 1], 1) == 0]
0 голосов
/ 03 декабря 2018

Вы можете сделать это, используя np.floor, следующим образом:

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

Или вы можете сделать это, используя astype(int), следующим образом:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...