np.squeeze
- это просто оболочка для a.squeeze()
, метод массива.Ваш аргумент - это список, у которого нет этого метода.Итак, функция пытается создать массив из списка:
In [325]: np.array(['', []])
....
ValueError: setting an array element with a sequence
Вы пытаетесь создать массив из смеси объектов, строки и списка.
In [326]: np.array(['', []],object)
Out[326]: array(['', list([])], dtype=object)
Если вы скажете ему создать массив dtype объекта, он может.
Но без этой спецификации он сначала попытается создать массив dtype строки.Но тогда возникают проблемы при размещении списка в слот строки - отсюда и ошибка.
Помимо любопытства, зачем вам squeeze
такой список?
Если бы список был первым, np.array
может создать массив объектов:
In [327]: np.array([[],''])
Out[327]: array([list([]), ''], dtype=object)
Это лишь одна из особенностей работы np.array
, когда предоставляется список предметов разных размеров и или типов.Его основная задача - сделать массив из списка аккуратно вложенных списков чисел или строк.
In [328]: np.array([[1,2,3,4]])
Out[328]: array([[1, 2, 3, 4]])
In [329]: np.squeeze([[1,2,3,4]])
Out[329]: array([1, 2, 3, 4])
Учитывая набор элементов, он должен «угадать», что вы действительно хотите;иногда он угадывает, а иногда сдается.