Преобразование списка python в numpy .ndarray рекурсивно - PullRequest
2 голосов
/ 28 марта 2020

Странная проблема, с которой я столкнулся сегодня. Был бы признателен за объяснение такого поведения np.array:

l1 = np.array([[1], [1]])
type(l1)
Out[43]: numpy.ndarray
l2 = np.array([[1, 2], [1]])
type(l2)
Out[44]: numpy.ndarray

Но:

type(l1[0])
Out[45]: numpy.ndarray
type(l2[0])
Out[47]: list

Есть идеи?

1 Ответ

0 голосов
/ 28 марта 2020

Такое поведение связано с тем, что оба (или, если быть точным, все) элементы не находятся в одном и том же измерении.

Учтите:

l1 = np.array([[1], [1, 2]])
print(type(l1[0]))
l2 = np.array([[1, 2], [1, 2]])
print(type(l2[0])) 

Выводит (сейчас ) ожидается

<class 'list'>
<class 'numpy.ndarray'>

Для того, чтобы получить numpy.ndarray «весь путь вниз», все элементы (и вложенные элементы) должны иметь одинаковое измерение.

...