Добавить элемент после каждого элемента в numpy массив python - PullRequest
1 голос
/ 22 февраля 2020

Я только начинаю с numpy и пытаюсь создать функцию, которая принимает массив (x), преобразует его в массив np.array и возвращает массив numpy с 0,0,0, 0 добавлено после каждого элемента.

Это должно выглядеть так:

входной массив: [4,5,6]

вывод: [4,0,0,0,0,5,0 , 0,0,0,6,0,0,0,0]

Я пробовал следующее:

   import numpy as np
   x = np.asarray([4,5,6])
   y = np.array([])
   for index, value in enumerate(x):
        y = np.insert(x, index+1, [0,0,0,0])
        print(y)

, что возвращает:

[4 0 0 0 0 5 6]
[4 5 0 0 0 0 6]
[4 5 6 0 0 0 0]

Поэтому в основном мне нужно объединить вывод в один numpy массив, а не в три списка.

Кто-нибудь знает, как решить эту проблему?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 22 февраля 2020

Я не использовал numpy для решения этой проблемы, но этот код, похоже, возвращает требуемый результат:

a = [4,5,6]
b = [0,0,0,0]
c = []
for x in a:
   c = c + [x] + b
print(c)

Надеюсь, это поможет!

3 голосов
/ 22 февраля 2020

Используйте функцию numpy .zeros!

import numpy as np

inputArray = [4,5,6]

newArray = np.zeros(5*len(inputArray),dtype=int)
newArray[::5] = inputArray

Фактически, вы 'принудительно' заставляете все значения с индексами 0,5 и 10 становиться 4,5 и 6.

т. _____ [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

становится [4 0 0 0 0 5 0 0 0 0 6 0 0 0 0]

>>> newArray
array([4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 0, 0, 0 ,0])
...