In [71]: a,b,c = np.arange(0,4), np.arange(0,3), np.arange(0,7)
Легко поместить эти массивы в список, либо сразу, либо постепенно:
In [72]: [a,b,c]
Out[72]: [array([0, 1, 2, 3]), array([0, 1, 2]), array([0, 1, 2, 3, 4, 5, 6])]
In [73]: G =[a,b]
In [74]: G.append(c)
In [75]: G
Out[75]: [array([0, 1, 2, 3]), array([0, 1, 2]), array([0, 1, 2, 3, 4, 5, 6])]
Мы можем создать массив dtype объекта из этого списка.
In [76]: np.array(G)
Out[76]:
array([array([0, 1, 2, 3]), array([0, 1, 2]),
array([0, 1, 2, 3, 4, 5, 6])], dtype=object)
Имейте в виду, что иногда это может привести к созданию 2d-массива (если все подмассивы имеют одинаковый размер) или к ошибке.Обычно лучше придерживаться списка.
Повторное добавление или объединение в массив обычно не рекомендуется.Правильнее поступать хитрее и медленнее, когда он работает.
Но давайте продемонстрируем:
In [80]: G = np.array([a,b])
In [81]: G
Out[81]: array([array([0, 1, 2, 3]), array([0, 1, 2])], dtype=object)
c
расширяется с помощью простого объединения:
In [82]: np.concatenate((G,c))
Out[82]:
array([array([0, 1, 2, 3]), array([0, 1, 2]), 0, 1, 2, 3, 4, 5, 6],
dtype=object)
Вместо этого нам нужно обернуть c
в собственный массив dtype объекта:
In [83]: cc = np.array([None])
In [84]: cc[0]= c
In [85]: cc
Out[85]: array([array([0, 1, 2, 3, 4, 5, 6])], dtype=object)
In [86]: np.concatenate((G,cc))
Out[86]:
array([array([0, 1, 2, 3]), array([0, 1, 2]),
array([0, 1, 2, 3, 4, 5, 6])], dtype=object)
В общем случае, когда мы объединяем, dtypes должны совпадать или, по крайней мере, быть совместимыми.Здесь все входные данные должны быть объектом dtype.То же самое применимо при объединении составных dtypes (структурированных массивов).Только при соединении простых числовых dtypes (и строк) мы можем игнорировать dtypes (при условии, что мы не заботимся о том, чтобы целые числа стали числами с плавающей точкой и т. Д.).