object
Массивы dtype не поддерживают векторизованные операции. Но вы можете сделать туда и обратно, преобразовав сначала в list
, а затем обратно в массив. Здесь мы используем факт np.nan != np.nan
по проекту :
data = np.array([['beef', 'bread', 'cane_molasses', np.nan, np.nan, np.nan],
['brassica', 'butter', 'cardamom']])
res = np.array([[i for i in row if i == i] for row in data.tolist()])
array([['beef', 'bread', 'cane_molasses'],
['brassica', 'butter', 'cardamom']],
dtype='<U13')
Обратите внимание, что результирующий массив будет иметь строковые типы (здесь с максимальной длиной 13). Если вам нужен массив object
dtype, который может содержать произвольные объекты, вам нужно указать dtype=object
:
res = np.array([[i for i in row if i == i] for row in data.tolist()], dtype=object)
array([['beef', 'bread', 'cane_molasses'],
['brassica', 'butter', 'cardamom']], dtype=object)