Вставьте несколько значений nan после каждого элемента массива в python - PullRequest
2 голосов
/ 07 мая 2020

Я пытаюсь сделать что-то очень простое, но застрял. Некоторая помощь была бы очень хорошей. У меня есть это:

x=([0.,1.,2.,3.,4.])

, и я хочу получить это:

x1=([0.,nan,nan,nan,nan,nan,1.,nan,,nan,nan,nan,nan,2.,nan,nan,nan,nan,nan,3.,nan,nan,nan,nan,nan,4.,nan,nan,nan,nan,nan])

5 значений нанометров после каждого элемента этого массива. Моя попытка до сих пор:

x = np.arange(0,5, dtype=float)
x1= np.insert(x,[i+1 for i in x], np.nan)

, но я могу получить только это:

array([ 0., nan,  1., nan,  2., nan,  3., nan,  4., nan])

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

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

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Я бы создал полный массив nan и вставил бы x значения с помощью среза:

y = np.full(len(x)*6, np.nan)
y[::6] = x

Вывод (y):

array([ 0., nan, nan, nan, nan, nan,  1., nan, nan, nan, nan, nan,  2.,
       nan, nan, nan, nan, nan,  3., nan, nan, nan, nan, nan,  4., nan,
       nan, nan, nan, nan])
0 голосов
/ 07 мая 2020

Вы можете добавлять списки, используя инфиксный +, а также sum (с начальным значением []). Это означает, что вы можете сделать это так:

y = sum([[a] + [nan] * 5 for a in x],[])
...