You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过for循环将多次计算的mU值存入数组而非仅保留最终标量?

如何将循环中计算的mU值全部存入数组

现有如下Python代码,用于计算不同温度T对应的mU值,目前在循环内可以打印每个T对应的mU,但循环外仅能获取最后一次循环的结果,希望将所有mU值存入数组中:

import numpy as np
import matplotlib.pyplot as plt
import scipy

c=299792458 #speed of light in nanometers per second
h=6.62607015e-34 #plank's constant in m^2 kg per s
kB=1.380649e-23 #Boltzmann's constant in m^2 kg per s^2 K
π=np.pi
    
def F(λ,n):
    return ((2*π*h*c**2)/λ**5)*(1/(np.exp((h*c)/(λ*kB*n))-1))

def integrand0(λ):
        return F(λ,10800)

T=np.linspace(3000,12000,46)

import scipy.integrate as integrate  

for n in T:
    def integrand(λ):
        return F(λ,n)
    mU=-2.5*(np.log10(integrate.quad(integrand,325e-9,395e-9))-np.log10(integrate.quad(integrand0,325e-9,395e-9)))
    print('T=',n,'mU=',mU[0])
    

print(mU[0])

解决方法

核心逻辑是提前初始化一个容器(列表或numpy数组),每次循环计算出mU值后,将其存入容器中。同时可以优化重复计算的部分提升效率,修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import scipy
import scipy.integrate as integrate  

c=299792458 #speed of light in nanometers per second
h=6.62607015e-34 #plank's constant in m^2 kg per s
kB=1.380649e-23 #Boltzmann's constant in m^2 kg per s^2 K
π=np.pi
    
def F(λ,n):
    return ((2*π*h*c**2)/λ**5)*(1/(np.exp((h*c)/(λ*kB*n))-1))

def integrand0(λ):
        return F(λ,10800)

T=np.linspace(3000,12000,46)

# 初始化空列表存储所有mU结果
mU_results = []

# 预计算integrand0的积分值,避免循环内重复计算
integral_0 = integrate.quad(integrand0, 325e-9, 395e-9)[0]

for n in T:
    def integrand(λ):
        return F(λ,n)
    integral_n = integrate.quad(integrand, 325e-9, 395e-9)[0]
    # 直接计算标量mU,避免后续索引操作
    mU = -2.5 * (np.log10(integral_n) - np.log10(integral_0))
    print('T=',n,'mU=',mU)
    # 将当前结果存入列表
    mU_results.append(mU)

# 可选:将列表转换为numpy数组,方便后续数值操作
mU_array = np.array(mU_results)

# 循环外可直接调用所有结果
print("所有mU值数组:", mU_array)

优化说明

  • 提前计算integrand0的积分结果,减少循环内的重复计算,大幅提升代码运行速度
  • 直接提取integrate.quad返回的第一个元素(积分标量值),简化后续计算逻辑
  • 用列表存储结果,循环结束后可按需转换为numpy数组,适配不同场景需求

内容的提问来源于stack exchange,提问作者Ruben Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:01:35