所以我是 Python 新手,我想将包含笛卡尔坐标的 3D 数组转换为球坐标。我已经完成了计算转换的函数:
def cart2sph(x, y, z):
xy = np.sqrt(x**2 + y**2) # sqrt(x² + y²)
x_2 = x**2
y_2 = y**2
z_2 = z**2
r = np.sqrt(x_2 + y_2 + z_2) # r = sqrt(x² + y² + z²)
theta = np.arctan2(y, x)
phi = np.arctan2(xy, z)
return r, theta, phi
但是,如果我有一个随机数组 (N,N,N),例如
N = 3
array = np.random.rand(N, N, N).astype(dtype=np.float16)
并将 x、y 和 z 坐标传递给我的函数以将笛卡尔坐标转换为球坐标
x = np.asarray(array_np)[:,0].astype(dtype=np.float16)
y = np.asarray(array_np)[:,1].astype(dtype=np.float16)
z = np.asarray(array_np)[:,2].astype(dtype=np.float16)
sphere_coord = cart2sph(x,y,z)
我不断得到错误的转换结果。我尝试了不同的方法,但仍然无法弄清楚我做错了什么。