Соединить два массива

Рейтинг: 0Ответов: 2Опубликовано: 19.01.2023

Вопрос такой: я хочу создать массива из двух исходных:

massive_p = np.arange(1, 98, 5)
massive_m = np.arange(0.1, 2.1, 0.1)
list(zip(massive_p, massive_m))

[(1, 0.1),
 (6, 0.2),
 (11, 0.30000000000000004),
 (16, 0.4),
 (21, 0.5),
 (26, 0.6),
 (31, 0.7000000000000001),
 (36, 0.8),
 (41, 0.9),
 (46, 1.0),
 (51, 1.1),
 (56, 1.2000000000000002),
 (61, 1.3000000000000003),
 (66, 1.4000000000000001),
 (71, 1.5000000000000002),
 (76, 1.6),
 (81, 1.7000000000000002),
 (86, 1.8000000000000003),
 (91, 1.9000000000000001),
 (96, 2.0)]

Но так, чтобы каждому элементу massive_p соответствовали все элементы massive_m, т.е. (1, 0.1), (1..0.2)...(1,2) в данном случае получился массив из 400 элементов.

Как это реализовать?

Ответы

▲ 2Принят

Используйте itertools.product:

for x in itertools.product(massive_p, massive_m, repeat=1):
    print(x)
▲ 0

Есть решение и в рамках самого Numpy:

import numpy as np

massive_p = np.arange(1, 98, 5)
massive_m = np.arange(0.1, 2.1, 0.1)
print(np.array(np.meshgrid(massive_p, massive_m)).T.reshape(-1, 2))

Подсмотрено на англоязычном СО.