特定の関数の値を含む 3D numpy 配列があります。2D 等値面、またはこの関数の特定の値を表す一連の等値面を計算したいと考えています。
この特定のケースでcolumn = myarray[i, j, :]
は、3D 配列の各 1D 列 ( ) を個別に処理できます。だから私が知りたいのは、関数が特定の値に等しい最後のインデックス位置(2D配列)myvalue
です。
例証するいくつかの(遅い)コード:
# myarray = 3D ndarray
import numpy as np
from scipy import interpolate
result = np.zeros(nx, ny)
z_values = np.arange(nz)
for i in range(nx):
for j in range(ny):
f = interpolate.interp1d(my_array[i, j], z_values)
result[i, j] = f(myvalue)
私はこれが他のトリックで少しスピードアップできることを知っていますがnp.ndenumerate
、この種の等値面を行うためのより簡単な方法がすでにあるかどうか疑問に思っていました. ndimage
または他のライブラリには何も見つかりませんでした。mayavi2 と vtk には等値面を処理するためのツールがたくさんあることは知っていますが、ここでの私の目的は視覚化ではありません。表示ではなく、これらの等値面の値に対して計算を実行したいのです。さらに、vtk の等値面メソッドの多くはポリゴンなどを含むようで、必要なのは各等面値の位置の 2D 配列だけです。