首页 > 解决方案 > 如何将形状 (60,58) (60,59) 的数组更改为相等

问题描述

我正在为我正在学习航空工程的朋友编写一个程序。我正在尝试测试我实现的数学是否有效。对于那些知道的人,我正在尝试计算差异(我认为我不是工程师,我不会假装我是)。

他给我发了一个堆栈溢出链接,指向他认为应该如何做。(线程可以在这里找到。他的版本对我不起作用,因为它给了我一个 Numpy 错误,如下所示:

numpy.core._internal.AxisError: axis 1 is out of bounds for array of 
dimension 1

现在我尝试了一种不同的方法,它给了我一个不同的错误,如下所示:

ValueError: operands could not be broadcast together with shapes (60,58) 
(60,59)

这种方法给了我上面的错误,我不完全确定如何解决它。我已经放了给我上述错误的代码。

velocity = np.diff(c_flow)/np.diff(zex)
ucom = velocity.real
vcom = -(velocity.imag)
deltau = np.divide((np.diff(ucom)),(np.diff(x)))
deltav = np.divide((np.diff(vcom)),np.diff(y))
print(deltau + deltav)

注:C_flow在程序前面定义,是复势。zex也早先定义为复变量的早期形式。xy是来自坐标向量的两个坐标矩阵。

print 语句的预期结果应该为零或非常接近于零的值。(我不完全确定价值应该是多少,但正如我所说,我不是工程师)

先感谢您

编辑:

在遵循 BenT 的建议后,我使用了 np.gradient 和 np.sum 但这会在错误的方向上添加轴,因此为了抵消这一点,我将两个函数分开,如下所示:

velocity = np.diff(c_flow)/np.diff(z)
grad = (np.gradient(velocity))
divergence = np.sum(grad, axis=0)
print(np.average(divergence))
print(np.average(velocity))

标签: pythonnumpy

解决方案


推荐阅读