Вы путаете списки и массивы.Обратите внимание на то, что вы получаете на каждом этапе:
Начните со списка кортежей:
In [126]: test = [(0,1,2),(9,0,1),(0,1,3),(0,1,8)]
Создайте двумерный массив:
In [127]: arr = np.array(test)
In [128]: arr
Out[128]:
array([[0, 1, 2],
[9, 0, 1],
[0, 1, 3],
[0, 1, 8]])
Разделите на список- по одной строке на элемент, но каждый из них представляет собой двумерный массив.Вопрос, всегда ли будет разделенное число такого размера?
In [129]: alist = np.array_split(arr, arr.shape[0])
In [130]: alist
Out[130]:
[array([[0, 1, 2]]),
array([[9, 0, 1]]),
array([[0, 1, 3]]),
array([[0, 1, 8]])]
Сублисты:
In [131]: alist[:0]
Out[131]: []
In [132]: alist[1:]
Out[132]: [array([[9, 0, 1]]), array([[0, 1, 3]]), array([[0, 1, 8]])]
Присоединение к списку:
In [133]: alist[:0] + alist[1:]
Out[133]: [array([[9, 0, 1]]), array([[0, 1, 3]]), array([[0, 1, 8]])]
Похоже, что вы хотите, этосписок кортежей, например, с чего вы начали:
In [134]: test[:0] + test[1:]
Out[134]: [(9, 0, 1), (0, 1, 3), (0, 1, 8)]
Вы можете воссоздать 2d массив, применив concatenate
к объединенным спискам массивов:
In [135]: np.concatenate(alist[:0] + alist[1:])
Out[135]:
array([[9, 0, 1],
[0, 1, 3],
[0, 1, 8]])
In [136]: np.concatenate(alist[:1] + alist[2:])
Out[136]:
array([[0, 1, 2],
[0, 1, 3],
[0, 1, 8]])
In [137]: np.concatenate(alist[:2] + alist[3:])
Out[137]:
array([[0, 1, 2],
[9, 0, 1],
[0, 1, 8]])
Но обратите внимание, чтоВы можете также легко получить любой из этих массивов с индексированием:
In [138]: arr[[0,1,3],:]
Out[138]:
array([[0, 1, 2],
[9, 0, 1],
[0, 1, 8]])
И с помощью помощника r_
вы можете построить индексы из диапазонов:
In [139]: np.r_[:2, 3:4]
Out[139]: array([0, 1, 3])
In [140]: arr[np.r_[:2, 3:4],:]
Out[140]:
array([[0, 1, 2],
[9, 0, 1],
[0, 1, 8]])
Вы также можете сделатьобъединение после индексации:
In [141]: np.concatenate([arr[:2,:], arr[3:,:]], axis=0)
Out[141]:
array([[0, 1, 2],
[9, 0, 1],
[0, 1, 8]])
+
определено для списков в качестве оператора соединения.Для массивов это дополнение.concatenate
(вместе с различными вариантами stack
) - это функция соединения с массивом.