2016-08-31 5 views
2

Я в принципе хочу, чтобы инициализировать пустой 6-тензор, например:Как инициализировать пустой массив Numpy с заданным количеством измерений?

a = np.array([[[[[[]]]]]]) 

Есть ли лучший способ, чем писать скобки явно?

+0

Кроме того, я не совсем уверен, что это хороший способ построения такого тензора снизу вверх, используя 'np.concatenate'. –

+0

Что вы собираетесь делать с этим пустым массивом? –

+0

Итеративное добавление строк этого ранга-1 с использованием 'np.concatenate (a, b, axis = 0)'. –

ответ

3

Вы можете использовать empty или zeros.

Например, чтобы создать новый массив 2x3, заполненный нулями, используйте: numpy.zeros(shape=(2,3))

1

Вы можете напрямую использовать ndarray конструктор:

numpy.ndarray(shape=(1,) * 6) 

или empty вариант, так как он, кажется, более популярным:

numpy.empty(shape=(1,) * 6) 
1

Итеративно добавляющие строки й в ранге-1 с использованием np.concatenate (a, b, axis = 0)

Не использовать. Создание массива итеративно происходит медленно, поскольку на каждом шаге ему необходимо создать новый массив. Плюс a и b должны совпадать во всех измерениях, кроме конкатенации.

np.concatenate((np.array([[[]]]),np.array([1,2,3])), axis=0) 

даст вам ошибку измерения.

Единственное, что вы можете сцепить в такой массив представляет собой массив с размером 0 dimenions

In [348]: np.concatenate((np.array([[]]),np.array([[]])),axis=0) 
Out[348]: array([], shape=(2, 0), dtype=float64) 
In [349]: np.concatenate((np.array([[]]),np.array([[1,2]])),axis=0) 
------ 
ValueError: all the input array dimensions except for the concatenation axis must match exactly 
In [354]: np.array([[]]) 
Out[354]: array([], shape=(1, 0), dtype=float64) 
In [355]: np.concatenate((np.zeros((1,0)),np.zeros((3,0))),axis=0) 
Out[355]: array([], shape=(4, 0), dtype=float64) 

Для работы итеративно, начните с пустого списка, и append к нему; затем сделайте массив в конце.

a = np.zeros((1,1,1,1,1,0)) может быть объединен на последней оси с другим np.ones((1,1,1,1,1,n)) массивом.

In [363]: np.concatenate((a,np.array([[[[[[1,2,3]]]]]])),axis=-1) 
Out[363]: array([[[[[[ 1., 2., 3.]]]]]]) 
2

Вы можете сделать что-то вроде np.empty(shape = [1] * (dimensions - 1) + [0]). Пример:

>>> a = np.array([[[[[[]]]]]]) 
>>> b = np.empty(shape = [1] * 5 + [0]) 
>>> a.shape == b.shape 
True 
Смежные вопросы