【问题标题】:Slicing and finding the volume切片并查找体积
【发布时间】:2014-09-19 18:22:24
【问题描述】:

我有四列,即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.0h1 = max(x) - min(x),即 最大值和最小值,这样我就可以为每个切片获得一个音量

我应该如何创建一个代码来计算 zcosmo 切片范围内的 50 个体积切片??

【问题讨论】:

    标签: python numpy iteration volume slice


    【解决方案1】:

    使用 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) 来获取形状的最终体积。

    【讨论】:

    • 我只需要 r1h1 成为 maxmin 值,这样我就可以为每个切片获得一个卷,而不是为每个切片获得全部 50 个值。
    • 我不明白您在编辑后想要达到什么目的。请详细说明。
    • 我想通了!我想要切片的体积,我们使用切片的高度和半径来获得。
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 2018-07-05
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2014-08-03
    相关资源
    最近更新 更多