Python, numpy; Как вставить элемент в начале массива
У меня есть числовой массив комплексных чисел. Поэтому я хочу вставить нуль в начало массива,
и сдвиг остальной части массива на одно место вперед.
Пример
:
a = [1 + 2j, 5 + 7j,..]
Я хочу сделать:
a = [0 + 0j, 1 + 2j, 5 + 7j,..]
Какой самый простой способ сделать это?
Ответы
Ответ 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])