Подтвердить что ты не робот

Python, numpy; Как вставить элемент в начале массива

У меня есть числовой массив комплексных чисел. Поэтому я хочу вставить нуль в начало массива, и сдвиг остальной части массива на одно место вперед.

Пример

:

a = [1 + 2j, 5 + 7j,..]

Я хочу сделать:

a = [0 + 0j, 1 + 2j, 5 + 7j,..]

Какой самый простой способ сделать это?

4b9b3361

Ответ 1

Простейший способ:

a = np.array([1 + 2j, 5 + 7j])
a = np.insert(a, 0, 0)

Тогда:

>>> a
array([ 0.+0.j,  1.+2.j,  5.+7.j])

Обратите внимание, что это создает новый массив, он фактически не вставляет 0 в исходный массив.

Существует несколько альтернатив np.insert, все из которых также создают новый массив:

In [377]: a
Out[377]: array([ 1.+2.j,  5.+7.j])

In [378]: np.r_[0, a]
Out[378]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [379]: np.append(0, a)
Out[379]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [380]: np.concatenate([[0], a])
Out[380]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [381]: np.hstack([0, a])
Out[381]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [382]: np.insert(a, 0, 0)
Out[382]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

Ответ 2

Альтернативой является "горизонтальный стек" (также создает новый массив):

np.hstack((0,a))

Ответ 3

Кроме того, если у вас есть n-мерный массив, вам также нужно указать ось, иначе он будет сглажен:

 np.insert(my_array, 0, myvalue, axis=1)

Ответ 4

Кроме того, если вы хотите добавить n номеров строк с нулевыми значениями. вы можете создать нулевой массив и использовать hstack:

zero_array = np.zeros([n])
new = np.hstack([zero_array,old_array])