从Numpy Meshgrid生成位置向量

问题描述 投票:1回答:1

我将在这里解释我的问题,而不必在实际应用程序上做太多详细介绍,以便我们可以在代码中扎根。基本上,我需要对向量字段进行操作。我的第一步是将字段生成为>

x,y,z = np.meshgrid(np.linspace(-5,5,10),np.linspace(-5,5,10),np.linspace(-5,5,10))

请记住,这是一个普遍的情况,在程序中,向量字段的边界并不完全相同。在一般情况下,我希望按照[

u,v,w = f(x,y,z)

不幸的是,这种情况需要更困难的操作。我需要使用类似于

的公式

Simplified version of Biot Savart Equation,其中矢量r在程序中定义为np.array([xgrid-x,ygrid-y,zgrid-z])除以​​其自己的范数。基本上,这是一个从空间中的每个点指向位置(x,y,z)的向量]

现在Numpy已经使用np.cross()实现了叉积函数,但是我似乎无法创建所需的“向量网格”。我有一个lambda函数,基本上是

xgrid,ygrid,zgrid=np.meshgrid(np.linspace(-5,5,10),np.linspace(-5,5,10),np.linspace(-5,5,10)) B(x,y,z) = lambda x,y,z: np.cross(v,np.array([xgrid-x,ygrid-y,zgrid-z]))

现在数组v是从另一个类导入的,似乎可以正常工作,但是第二个数组np.array([xgrid-x,ygrid-y,zgrid-z])的形状不正确,因为它是“网格网格的向量”而不是“网格的网格” 。我的大问题是,我似乎找不到一种可以通过np.cross()函数使用位置矢量的方式格式化网格的方法。有办法吗?

最初,我认为我可以按照以下方式做点事情:

x,y,z = np.meshgrid(np.linspace(-2,2,5),np.linspace(-2,2,5),np.linspace(-2,2,5)) A = np.array([x,y,z]) cross_result = np.cross(np.array(v),A)

但是,这将返回以下错误,我似乎无法避免:

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 1682, in cross raise ValueError(msg) ValueError: incompatible dimensions for cross product (dimension must be 2 or 3)

我将在这里解释我的问题,而不必在实际应用程序上做太多详细介绍,以便我们可以在代码中扎根。基本上,我需要对向量字段进行操作。我的第一个...

python arrays numpy matplotlib
1个回答
0
投票

reshape和广播有关的工作:

© www.soinside.com 2019 - 2024. All rights reserved.