Как я добавляю строки и столбцы к массиву NUMPY?

Привет у меня есть 1 000 рядов данных с 1 500 точками в каждом.

Они формируются (1000x1500) размер, массив Numpy создал использование np.zeros ((1500, 1000)) и затем заполнился данными.

Теперь, что, если я хочу, чтобы массив вырос для высказывания 1600 x 1100? Я должен добавить массивы с помощью hstack и vstack или существует ли лучший путь?

Я хотел бы, чтобы данные уже в 1000x1500 часть массива не были изменены, только пустые данные (нули), добавленные к нижней части и праву, в основном.

Спасибо.

6
задан Saullo G. P. Castro 27 August 2013 в 13:35
поделиться

4 ответа

Если вы хотите, чтобы в добавленных элементах работали нули, my_array.resize((1600, 1000)). Обратите внимание, что это отличается от numpy.resize(my_array, (1600, 1000)), в котором предыдущие строки дублируются, что, вероятно, не то, что вы хотите.

В противном случае (например, если вы хотите избежать инициализации элементов до нуля, что может быть ненужным), вы действительно можете использовать hstack и vstack для добавления массива, содержащего новые элементы; numpy. concatenate() (см. pydoc numpy.concatenate) тоже должен работать (насколько я понимаю, он более общий).

В любом случае, я бы предположил, что для расширения массива должен быть выделен новый блок памяти, и что все эти методы занимают примерно одно и то же время.

.
3
ответ дан 8 December 2019 в 17:22
поделиться

Это должно делать то, что вы хотите ( т.е. , используя массив 3x3 и массив 4x4 для представления двух массивов в OP)

>>> import numpy as NP
>>> a = NP.random.randint(0, 10, 9).reshape(3, 3)
>>> a
>>> array([[1, 2, 2],
           [7, 0, 7],
           [0, 3, 0]])

>>> b = NP.zeros((4, 4))

сопоставление a on to b:

>>> b[:3,:3] = a

>>> b
    array([[ 1.,  2.,  2.,  0.],
           [ 7.,  0.,  7.,  0.],
           [ 0.,  3.,  0.,  0.],
           [ 0.,  0.,  0.,  0.]])
9
ответ дан 8 December 2019 в 17:22
поделиться

В любом случае, вы застрянете, перераспределяя кусок памяти, поэтому не имеет значения, используете ли вы arr.resize () , np.concatenate , hstack / vstack и т. д. Обратите внимание, что если вы последовательно накапливаете много данных, списки Python обычно более эффективны.

2
ответ дан 8 December 2019 в 17:22
поделиться

Вы должны использовать reshape () и / или resize () в зависимости от ваших конкретных требований.

Если вам нужны главы и стихи из авторов, которых вам, вероятно, лучше разместить на доске обсуждений.

0
ответ дан 8 December 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: