Добавление массива NumPy в массив NumPy
у меня есть numpy_array. Что-то вроде [ a b c ].
и затем я хочу, чтобы добавить его в другой массив NumPy (так же, как мы создаем список списков). Как создать массив массивов NumPy, содержащий массивы NumPy?
Я пытался сделать следующее без всякой удачи
>>> M = np.array([])
>>> M
array([], dtype=float64)
>>> M.append(a,axis=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'
>>> a
array([1, 2, 3])
6 ответов:
In [1]: import numpy as np In [2]: a = np.array([[1, 2, 3], [4, 5, 6]]) In [3]: b = np.array([[9, 8, 7], [6, 5, 4]]) In [4]: np.concatenate((a, b)) Out[4]: array([[1, 2, 3], [4, 5, 6], [9, 8, 7], [6, 5, 4]])или такой:
In [1]: a = np.array([1, 2, 3]) In [2]: b = np.array([4, 5, 6]) In [3]: np.vstack((a, b)) Out[3]: array([[1, 2, 3], [4, 5, 6]])
Ну, сообщение об ошибке говорит все это: массивы NumPy не имеют
append()метод. Есть бесплатная функцияnumpy.append():numpy.append(M, a)Это позволит создать новый массив, вместо того, чтобы мутировать
Mна месте. Обратите внимание, что с помощьюnumpy.append()включает копирование обоих массивов. Вы получите более эффективный код, если будете использовать массивы NumPy фиксированного размера.
Вы можете использовать
numpy.append()...import numpy B = numpy.array([3]) A = numpy.array([1, 2, 2]) B = numpy.append( B , A ) print B > [3 1 2 2]это не создаст два отдельных массива, но добавит два массива в один размерный массив.
Свен сказал Все это, просто будьте очень осторожны из-за автоматической настройки типа при вызове append.
In [2]: import numpy as np In [3]: a = np.array([1,2,3]) In [4]: b = np.array([1.,2.,3.]) In [5]: c = np.array(['a','b','c']) In [6]: np.append(a,b) Out[6]: array([ 1., 2., 3., 1., 2., 3.]) In [7]: a.dtype Out[7]: dtype('int64') In [8]: np.append(a,c) Out[8]: array(['1', '2', '3', 'a', 'b', 'c'], dtype='|S1')Как вы видите, на основе содержимого dtype перешел от int64 к float32, а затем к S1
на самом деле всегда можно создать обычный список массивов NumPy и преобразовать его позже.
In [1]: import numpy as np In [2]: a = np.array([[1,2],[3,4]]) In [3]: b = np.array([[1,2],[3,4]]) In [4]: l = [a] In [5]: l.append(b) In [6]: l = np.array(l) In [7]: l.shape Out[7]: (2, 2, 2) In [8]: l Out[8]: array([[[1, 2], [3, 4]], [[1, 2], [3, 4]]])
Если я понимаю ваш вопрос, вот один из способов. Скажем, у вас есть:
a = [4.1, 6.21, 1.0]Так вот какой-то код...
def array_in_array(scalarlist): return [(x,) for x in scalarlist]что приводит к:
In [72]: a = [4.1, 6.21, 1.0] In [73]: a Out[73]: [4.1, 6.21, 1.0] In [74]: def array_in_array(scalarlist): ....: return [(x,) for x in scalarlist] ....: In [75]: b = array_in_array(a) In [76]: b Out[76]: [(4.1,), (6.21,), (1.0,)]
Comments