Попытка разбить массив numpy в зависимости от условия.Фильтр должен взять split_column и его split_value и разбить массив на две части, одна из которых содержит подмассив со всеми строками <= split_value в данном split_column. </p>
т.е. задано,
a = np.array([[5, 'hi', 23],
[4, 'we', 15],
[3, 'me', 10],
[2, 'be', 67],
[1, 'it', 100]])
split_column = 0
split_value = 3
Ожидаемый результат:
[[3, 'me', 10],
[2, 'be', 67],
[1, 'it', 100]]
Я пробовал это решение a[a[:, split_column] <= split_value]
, но оно работает, только если все элементы числовые.
Для смешанных типов в массиве numpy (как показано выше) я получаю
TypeError: '<=' не поддерживается между экземплярами 'numpy.ndarray' и 'int'</strong>
Использование str (), как в a[a[:, split_column] <= str(split_value)]
, не является решением, потому что 10 <= 3 становится истинным, что неверно.Для столбца (1) мне нужно сравнить str, но для других столбцов это должно быть числовое сравнение. </p>
Как мы можем сделать это в numpy, или мы должны перебирать все элементы, проверяющие типы перед сравнением?