Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Numpy和while循环生成所有可能的加法组合_Python_Loops_Numpy_While Loop - Fatal编程技术网

Python 使用Numpy和while循环生成所有可能的加法组合

Python 使用Numpy和while循环生成所有可能的加法组合,python,loops,numpy,while-loop,Python,Loops,Numpy,While Loop,我正在尝试从2个基本数组构建一个N维数组,该数组显示所有可能的组合,以添加所有值,从而: 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], . .

我正在尝试从2个基本数组构建一个N维数组,该数组显示所有可能的组合,以添加所有值,从而:

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循环,以便能够在生成新数据时追加行(代码如下)

将numpy导入为np
MassFlowOx=np.linspace(0.1103150)*10**-3
MassFlowFuel=np.linspace(0.1,75150)*10**-3
尺寸=长度(质量流量燃料)
尺寸\最终=尺寸**2
MassFlowComb=np.零(大小)
温度=np.零(大小,数据类型=浮点)
i=0
j=0
MassFlowCombArray=np.零(大小)
#运行所有可能的组合以在数组中添加值

而i您所需要的已经在NumPy中实现,称为
np.add.outer
。如果您想计算差异,只需将
add
替换为
subtract
。如果您想购买产品,只需使用
outer
。对于
Nx1
Mx1
数组,结果将是维度
NxM

下面是一个简单的例子:

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.add.outer(a, b)


为什么不直接用double for loop呢

import numpy as np
MassFlowOx = np.linspace(0.1,103,150)*10**-3
MassFlowFuel = np.linspace(0.1,75,150)*10**-3
MassFlowComb = []
for a in MassFlowOx:
    for b in MassFlowFuel:
        MassFlowComb.append(a+b)
MassFlowComb = np.array(MassFlowComb)

对于这种情况,创建For循环比创建While循环更好。您的代码可以非常简单,如下所示:

import numpy as np

MassFlowOx = np.linspace(0.1,103,150)*10**-3
MassFlowFuel = np.linspace(0.1,75,150)*10**-3

MassFlowComb = []

for  Fo in MassFlowOx:
  sub_list = []
  for  Ff in MassFlowFuel:
    sub_list.append(Fo+Ff)
  MassFlowComb.append(sub_list)

print(np.asarray(MassFlowComb))

请注意,我使用了一个列表来追加总和,但您可以使用numpy来完成此操作。

快速回答是:我是一个乞丐编码器:/谢谢您的回复,我会看看是否可以实现它!谢谢你的回复!这似乎是我问题的答案!我是一个乞丐,我倾向于在文档中迷失方向。我将检查这是否会产生可用的数组格式!我刚意识到你不用转置也很好。检查你的最终答案,我相信它会起作用
import numpy as np
MassFlowOx = np.linspace(0.1,103,150)*10**-3
MassFlowFuel = np.linspace(0.1,75,150)*10**-3
MassFlowComb = []
for a in MassFlowOx:
    for b in MassFlowFuel:
        MassFlowComb.append(a+b)
MassFlowComb = np.array(MassFlowComb)
import numpy as np

MassFlowOx = np.linspace(0.1,103,150)*10**-3
MassFlowFuel = np.linspace(0.1,75,150)*10**-3

MassFlowComb = []

for  Fo in MassFlowOx:
  sub_list = []
  for  Ff in MassFlowFuel:
    sub_list.append(Fo+Ff)
  MassFlowComb.append(sub_list)

print(np.asarray(MassFlowComb))