In [30]: a = np.array([[(1, 2, 3), 40, 50], [(4, 5, 6), 70, 80]])
Посмотрите на a
:
In [31]: a
Out[31]:
array([[(1, 2, 3), 40, 50],
[(4, 5, 6), 70, 80]], dtype=object)
In [32]: a.shape
Out[32]: (2, 3)
1-й столбец - 2 элемента, оба кортежа
In [33]: a[:,0]
Out[33]: array([(1, 2, 3), (4, 5, 6)], dtype=object)
они могут быть объединены в один 2d массив с помощью:
In [34]: np.stack(_)
Out[34]:
array([[1, 2, 3],
[4, 5, 6]])
Структура этих двух последних массивов совершенно различна.У одного есть 2 элемента, ссылки на кортежи еще где-то в памяти.Другой имеет 6 элементов, чисел, а не ссылок, с двумерной формой и шагами.
Это отличается:
In [35]: np.array([(1, 2, 3), (4, 5, 6)])
Out[35]:
array([[1, 2, 3],
[4, 5, 6]])
Он создает массив из списка кортежей.Out[33]
создает массив из существующего массива (с объектом dtype).