Я пытаюсь построить N-мерный массив из 2 базовых массивов, которые показывают все возможные комбинации, возможные для добавления всех значений, таких как:
Array A = [N0, N1, N2, ... , Nn]
Array B = [M0, M1, M2, ..., Mn]
Combinations = [[N0+M0, N0 + M1, ..., N0+Mn],
[N1+M0, N1 + M1, ..., N1 + Mn],
.
.
.,
]
Я знаю, что могу использоватьдекартово произведение, чтобы найти все возможные комбинации (мне нет дела до повторения), однако мне не нужен продукт всех значений, мне нужно сложение.Мне кажется, что я не могу получить цикл while, который я кодировал, чтобы иметь возможность добавлять строки, поскольку он генерирует новые данные (код ниже).
import numpy as np
MassFlowOx = np.linspace(0.1,103,150)*10**-3
MassFlowFuel = np.linspace(0.1,75,150)*10**-3
size = len(MassFlowFuel)
size_final=size**2
MassFlowComb = np.zeros(size)
temp = np.zeros(size, dtype=float)
i=0
j=0
MassFlowCombArray = np.zeros(size)
# runs all possible combinations for the addition of values in arrays
while i<size-1:
temp[i] = MassFlowFuel[i] + MassFlowOx[i]
while j<size-1:
MassFlowOx[i] = MassFlowOx[j]
print MassFlowOx[i]
j += 1
MassFlowComb[i] = temp[i]
MassFlowCombArray[i] = np.append([MassFlowComb[0]], [MassFlowComb[i]], axis = 0)
i+=1
print MassFlowComb[i]
Есть ли конкретная функция, которую я могу использовать?Мне не удалось определить метод, который добавляет все комбинации значений в цикле while, поскольку он выдает ошибку последовательности.
РЕДАКТИРОВАТЬ:
Оба ответаработал.Цикл for делает его N-мерным, а использование np.add.outer
создает N-мерный массив.Для целей этого кода последний более полезен.
Спасибо за все ответы!