我将在这里解释我的问题,而不必在实际应用程序上做太多详细介绍,以便我们可以在代码中扎根。基本上,我需要对向量字段进行操作。我的第一步是将字段生成为>
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)
。
不幸的是,这种情况需要更困难的操作。我需要使用类似于
的公式,其中矢量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)
我将在这里解释我的问题,而不必在实际应用程序上做太多详细介绍,以便我们可以在代码中扎根。基本上,我需要对向量字段进行操作。我的第一个...
与reshape
和广播有关的工作: