我创建了一个二维数组(Ncreated),该数组显示了在特定时间步长(dt)中形成了多少颗恒星,然后我使用np.where指出恒星形成在十亿年后停止。因此,该阵列仅及时到达第4行。这就是我要的。 但是现在,我只想累加列中的值,以便在第4行之后的每一列中应该有一个单独的常量值。这是Nsum。但是,由于感觉到np.where影响了值,所以我无法使用它。 我将如何纠正定义Nsum来创建所需的数组? 感谢您的帮助。
M = arange(0.5,25.5,0.5)
xi0 = 1
scalefactor = 14.35
Nyear = scalefactor * xi0 * M**-2.35
N = 50
dt = np.zeros(N)
t = logspace(0, log10(tgal), N)
for i in range(1,N):
dt[i] = t[i] - t[i-1]
dt[0] = 0.1
Ncreated = np.zeros((len(t),len(M)))
Nsum = np.zeros((len(t),len(M)))
for i in range(0,len(t)):
for j in range(0,len(M)):
Ncreated[i,j] = (Nyear[j] * dt[i])
d, = np.where(t > log10(1e9))
Ncreated[d] = 0
for i in range(0,len(t)):
for j in range(0,len(M)):
Nsum[i,j] = Ncreated[i,j] - Ncreated[[i-1],[j-1]]
答案 0 :(得分:1)
可以用
解决Nsum = cumsum(Ncreated, axis = 0)