заменить элемент на элемент различными массивами

У меня есть массив:

a = np.array([1,2,3,4,5,6,7,8])

Массив может быть преобразован в a = np.array([[1,2,3,4],[5,6,7,8]]) , что более удобно.

Теперь у меня есть массив:

 b = np.array([[11,22,33,44], [55,66,77,88]]) 

Я хочу заменить на каждый из этих элементов соответствующие элементы из a.

Массив всегда будет содержать столько элементов, сколько b.

Итак, массив b будет:

[1,2,3,4], [5,6,7,8]

Обратите внимание, что я должен сохранить каждый размер субармы b до (4,) . Я не хочу изменять его. Итак, idx будет принимать значения от 0 to 3 Я хочу сделать соответствие every four values .

Я борюсь с изменением формы, разбиением, маской .. и я не могу понять, как это сделать.

 import numpy as np #a = np.array([[1,2,3,4],[5,6,7,8]]) a = np.array([1,2,3,4,5,6,7,8]) b = np.array([[11,22,33,44], [55,66,77,88]]) for arr in b: for idx, x in enumerate(arr): replace every arr[idx] with corresponding a value 

4 Solutions collect form web for “заменить элемент на элемент различными массивами”

Следующие работали для меня:

 i = 0 for arr in b: for idx, x in enumerate(arr): arr[idx] = a[i] print(arr[idx]) i += 1 

Выход (arr [idx]): 1 2 3 4 5 6 7 8 Если вы напечатаете print(b) она выведет [[1 2 3 4] [5 6 7 8]]

Для вашего текущего случая, вероятно, вы хотите:

b, c = list(a.reshape(2, -1))

Это не самый чистый, но это однострочный. Поверните свой 1D-массив в 2D-массив с первым размером как 2 с reshape(2, -1) , затем list разбивает его по первому размеру, чтобы вы могли напрямую назначить их b, c

Вы также можете сделать это с помощью специальной функции numpy.split

b, c = np.split(a, 2)

EDIT: на основе принятого решения векторизованный способ сделать это

b = a.reshape(b.shape)

b = a[:len(a)//2] c = a[len(a)//2:]

Ну, я довольно новичок в Python, но это сработало для меня:

  for i in range (0, len(a)//2): b[i] = a[i] for i in range (len(a)//2,len(a)): c[i-4] = a[i] 

напечатав 3 массива, у меня есть следующий вывод:

 [1 2 3 4 5 6 7 8] [1 2 3 4] [5 6 7 8] 

Но я бы пошел на решение Дэниела (раскол): 1 лайнер, используя numpy API, …

  • как рассчитать coskew и cokurtosis
  • Вычислить среднее из каждых x строк в таблице и создать новую таблицу
  • Коэффициенты корреляции и значения p для всех пар строк матрицы
  • `Sudo pip install matplotlib` не может найти заголовки freetype.
  • Поиск количества отдельных элементов в DataFrame в каждом столбце
  • Как работает эта однострунная конвертация вектора?
  • изменить размер массива 2D numpy, исключая NaN
  • Как преобразовать набор python в массив numpy?
  • Python - лучший язык программирования в мире.