当前位置: 首页 > 知识库问答 >
问题:

Python用循环输出初始化几个数组

郭凡
2023-03-14

因此,我对python(在Spyder IDE3.8中使用Python3)相对来说是个新手。我有下面的主要计算文件,其中几个函数汇集在一起,并循环通过。现在,我试图用等级函数来评估spray_pressure、spray_angle和particle_size的单个值是否在给定的边框中。如果不是,则0转到新数组,如果是,则实际值存储在新数组中。所以我想将所有的输出存储在4个新的数组spray_pressure,spray_angle,particle_size和massflow中。但我现在不知道如何初始化它们和正确存储值。正如你所看到的,这个脚本的输出应该是4个数组spray_pressure,spray_angle,particle_size和massflow,每个数组的大小为[105,35],因此可以根据这些数组进行进一步的绘图和计算。

我试过np.array(len(no_düsenkombination),len(no_hours_Process),但这不起作用,因为我需要一个[105x35]数组,而np.array似乎只限于32个条目。如果有人知道一个好的解决方案,我会非常感激的。我今天一整天都在想办法。


from calc_particlesize import calc_particlesize
from calc_sprayangle import calc_sprayangle
from calc_spraypressure import calc_spraypressure
from evaluation import evaluation

def calc_processfactor(df_düsenkombinationen, mk, process_duration, df_rezeptur, recipe_nr):
        
    number_of_nozzles = 6
    k = 0 #increment mass flow kondensat
    index_Zero = 0
    grade = 0
    mkmax = mk/(number_of_nozzles*3600)
    
    no_düsenkombination = 105

    no_hours_Process = 35
    
    delta_massKondensat = 0
        
    for i in range(no_düsenkombination):
        for j in range(no_hours_Process):
             
            # deltamk[index_Zero,j] = mkmax[j,index_Zero]/100
            
            massflow = np.zeros(len(no_düsenkombination), len(no_hours_Process))
            delta_massKondensat = mkmax/100
            mk = mkmax 
            
            while grade != 1 and mk > 0:
               
                mk = mkmax-k*delta_massKondensat                                       #mass kondensat max ist reduziert bis grade                                                     #oder mk = 0 ist
                spray_pressure = calc_spraypressure(mk,df_düsenkombinationen.iloc[0:5,i:i+1])                                                #Berechnung des Sprühdruckes
                spray_pressure_eff = spray_pressure
                spray_angle = calc_sprayangle(spray_pressure, df_rezeptur, recipe_nr, df_düsenkombinationen)                         #Berechnung des Sprüwinkels
                spray_angle_eff = spray_angle
                particle_size = calc_particlesize(spray_pressure,spray_angle, mk, recipe_nr, df_rezeptur, df_düsenkombinationen)      #Berechnung der Partikelgrösse
                particle_size_eff = particle_size
                grade = evaluation(spray_pressure,spray_angle,particle_size)                                  #Bewertung der Prozessgrössen
                k = k+1

            if grade == 0:
                spray_pressure[i,j] = 0         #INTIIALISIEREN      #Matrix mit Sprühdruck, Zeile: Kombiantionen, Spalte: Stunden
                spray_angle[i,j]= 0          #Matrix mit Sprühwinkel, Zeile: Kombiantionen, Spalte: Stunden
                particle_size[i,j]= 0        #Matrix mit Partikelgrösse, Zeile: Kombiantionen, Spalte: Stunden
                massflow[i,j]= 0            #Matrix mit Konzentratmassenstrom, Zeile: Kombiantionen, Spalte: Stunden
            else:
                spray_pressure[i,j] =  spray_pressure_eff
                spray_angle[i,j]= spray_angle_eff
                particle_size[i,j] = particle_size_eff
                massflow[i,j] = mk*6*3600
                grade = 0                      #Reset von grade

        
    return(spray_pressure, spray_angle, particle_size, massflow)```

共有1个答案

苏洛城
2023-03-14

np.array的唯一实际大小限制是可用的内存量。虽然您的代码中可能存在其他错误,但我怀疑问题是:

np.zeros(len(no_düsenkombination), len(no_hours_Process))

其中应包括:

np.zeros([no_düsenkombination, no_hours_Process])

得到一个105x35的零矩阵。

 类似资料:
  • Autoconf生成的configure脚本需要一些关于如何进行初始化,诸如如何寻找包的源文件,的信息 以及如何生成输出文件的信息。本节叙述如何进行初始化和创建输出文件。 寻找configure的输入文件 所有configure脚本在作任何其他事情之前都必须调用AC—INIT。此外唯一必须调用的宏是 AC—OUTPUT(参见 创建输出文件 )。 宏: AC_INIT unique—file—in—

  • 问题内容: 知道为什么for循环初始化程序中的此struct表达式在编译时会导致语法错误吗?在这种情况下,指向struct的指针工作正常,但是我需要像波纹管这样的局部变量。感谢您的建议! 问题答案: 简化您的代码: 给出编译时错误: 预期的布尔值或范围表达式,找到简单的语句(缺少复合文字周围的括号?)(以及另外1个错误) 该构造难以解析。不管是复合文字的一部分还是语句本身( 块)的开头括号,开头括

  • 我有一组常量值,可以作为列表使用。使用这些值,我必须创建一个键值对对象,并且必须将该对象添加到列表中。我想在JAVA 8中使用流API来实现这一点。下面是使用for循环的示例实现 这可以使用流减少操作来实现吗?

  • 初始化检出 大多数时候,你会使用checkout从版本库取出一个新拷贝开始使用Subversion,这样会在本机创建一个项目的“本地拷贝”,这个拷贝包括了命令行指定版本库中的HEAD(最新的)版本: $ svn checkout http://svn.collab.net/repos/svn/trunk A trunk/Makefile.in A trunk/ac-helpers A

  • 问题内容: 有没有办法初始化形状的numpy数组并将其添加到其中?我将通过列表示例解释我需要的内容。如果要创建循环中生成的对象列表,可以执行以下操作: 我想对一个numpy数组做类似的事情。我了解vstack,串联等。但是,这些似乎需要两个numpy数组作为输入。我需要的是: 本应具有的形状。这该怎么做? 编辑: 我想添加以下说明。我知道我可以定义然后填充它。但是,这需要预先指定big_array

  • 问题内容: 我在python中初始化2D数组时遇到问题。我想要一个6x6的阵列,我做到了 但是当我这样做时: 注意,我只设置了1个项目,并且在所有行上都设置了“ replicated”。怎么了?我认为它与引用相同的列表有关,但是我该如何解决呢? 我估计 可以,但是初始化一个空的6x6数组似乎很长,如果我想要10000x10000数组怎么办,效率会很低? 更新 我还可以初始化2D数组的字典吗?我有一