Вы должны начать с определения того, что вы хотите с точки зрения формы.Я попытался понять это из вопроса, пожалуйста, добавьте больше деталей, если это не правильно.
Так что здесь у нас (1) пустой массив не допускается и (2) не более двух измерений.Он переводится следующим образом:
def is_allowed(arr):
return arr.shape != (0, ) and len(arr.shape) <= 2
Первое условие просто сравнивает форму вашего массива с формой пустого массива.второе условие проверяет, что массив имеет не более двух измерений.
С внутренними измерениями возникает проблема.Некоторые из списков, которые вы предоставили в качестве примера, не являются массивами.Если вы приведете np.array([[1,2,3],[2,3],[2,43,32]])
, вы получите просто массив, в котором каждый элемент является спискомЭто не «настоящий» массив с прямым доступом ко всем элементам.См. Пример:
>>> np.array([[1,2,3],[2,3],[2,43,32]])
array([list([1, 2, 3]), list([2, 3]), list([2, 43, 32])], dtype=object)
>>> np.array([[1,2,3],[2,3, None],[2,43,32]])
array([[1, 2, 3],
[2, 3, None],
[2, 43, 32]], dtype=object)
Поэтому я бы порекомендовал (если вы работаете с обычными списками) проверить, что все массивы имеют одинаковую длину, но не пустые.