我有四列,即x,y,z,zcosmo
。 zcosmo的范围是0.0<zcosmo<0.5
。
对于每个x,y,z,都有一个zcosmo。
绘制x,y,z
时,这就是它们的外观。
我想找到这个数字的数量。如果我将它切成50个部分(按zcosmo升序排列),以使每个部分都像一个圆柱,则可以将它们加起来以获得最终体积。
切片气瓶的体积为pi*r^2*h
,在我的情况下为r = z/2 & h = x
例如切片,x,z for 0.0<zcosmo<0.01
找到此卷V1。然后x,z for 0.01<zcosmo<0.02
找到该体积V2,依此类推,直到zcosmo = 0.5
我知道要手动说(当然这很费时间),方法是说:
r1 = z[np.logical_and(zcosmo>0.0,zcosmo<0.01)] / 2 #gives me z within the range 0.0<zcosmo<0.01
h1 = x[np.logical_and(zcosmo>0.0,zcosmo<0.01)] #gives me x within the range 0.0<zcosmo<0.01
V1 = math.pi*(r1**2)*(h1)
这里r1和h1应该是
r1 = ( min(z) + max(z) ) / 2.0
和h1 = max(x) - min(x)
,即最大值和最小值,以便每个切片得到一个体积我应该如何创建一个代码来计算zcosmo切片范围内的50个体积切片?
最佳答案
使用for循环:
volumes = list()
for index in range(0, 50):
r = z[np.logical_and(zcosmo>index * 0.01, zcosmo<index * 0.01 + 0.01)] / 2
h = x[np.logical_and(zcosmo>index * 0.01, zcosmo<index * 0.01 + 0.01)]
volumes.append(math.pi*(r**2)*(h))
最后,体积将是包含50个气瓶的体积的列表。
您可以使用
volume = sum(volumes)
来获取形状的最终体积。