大きなベクトル フィールドがあり、フィールドが大きく (たとえば 512^3; ただし、必ずしも正方形であるとは限りません)、ベクトルは 2D または 3D のいずれかです (たとえば、形状は [512, 512, 512, 2] または [512, 512, 512, 3])。
ベクトルの大きさの 2 乗のスカラー場を計算する最速の方法は何ですか?
各方向にループするだけです。
import numpy as np
shp = [256,256,256,3] # Shape of vector field
vf = np.arange(3*(256**3)).reshape(shp) # Create vector field
sf = np.zeros(shp[:3]) # Create scalar field for result
for ii in range(shp[0]):
for jj in range(shp[1]):
for kk in range(shp[2]):
sf[ii,jj,kk] = np.dot( vf[ii,jj,kk,:] , vf[ii,jj,kk,:] )
しかし、それはかなり遅いです。もっと速いものはありますか?