Как добавить два списка разной длины? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь извлечь первый и последний элемент из массива «x», а затем повторить пять раз, а затем окончательно объединить с исходным «x».

Ошибка: операнды не могут быть переданы вместе с фигурами (5, ) (1000,)

Вот код

import numpy as np 
import random
x= np.random.uniform(0, 1, 1000)
x = [x[0]]*5 + x + [x[-1]]*5

1 Ответ

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

Не ясно, чего вы пытаетесь достичь. В вашем примере нет двух списков.

Похоже, вы пытаетесь сделать одну из следующих двух вещей:

  • Добавить первый и последний элемент (раз 5) ко всем элементам массива
  • Добавьте значение предыдущего и следующего элементов (раз 5) к каждому элементу

Для первой цели вы бы добавляли только скаляры в массив, поэтому вы не должны заключать первый / последний элементы в квадратных скобках:

    import numpy as np 
x= np.random.uniform(0, 1, 1000)
x = x[0]*5 + x + x[-1]*5

для второй цели, вы можете сделать это, используя присвоения копии массива:

y = x.copy()
y[:-1] += 5*x[1:]
y[1:]  += 5*x[:-1]

[EDIT] на основе комментария ОП, ему нужно набивать по 5 с каждой стороны. функция np.pad () может сделать это напрямую:

x = np.pad(x,(5,5),mode="edge")

пример:

a = np.array([7,8,9])
np.pad(a,(5,5),mode="edge")

# array([7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 9, 9, 9])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...