python - 切片并找到体积

标签 python numpy iteration volume slice

我有四列,即 x,y,z,zcosmo 。 zcosmo的范围是0.0<zcosmo<0.5

对于每个 x,y,z,都有一个 zcosmo。

x,y,z 被绘制出来,这就是它们的样子。 enter image description here

我想求这个图形的体积。如果我将其切成 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.0h1 = 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))

最后,volumes 将是包含 50 个气缸的体积的列表。

您可以使用volume = sum(volumes)来获取形状的最终体积。

关于python - 切片并找到体积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997360/

相关文章:

javascript - 如何遍历 Angular 2 中的对象属性

python - 为什么 str(range(0,10)) 中的 ' ' 解析为 True?

python - 切换列中的连续值,直到条件发生变化

python - 使用 matplotlib 绘制地震摆动轨迹

python - 按收入总和和相应的最高贡献月份分组 - Pandas

parsing - 在 Racket 方案中读取字符串循环

java - 遍历数组,android dev

python - 如何阻止命令提示符在 python 中关闭?

javascript - Python3 中的 Futures 和 ES6 中的 Promises 的区别

python - 在 Python 中输入强制转换问题