如何将形状(60,58)(60,59)的数组更改为相等

时间:2019-05-03 16:15:30

标签: python numpy

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

他向我发送了一个Stack Overflow链接,该链接指向他认为应该如何执行。 (可以在here中找到该线程。他的版本对我不起作用,因为它给了我一个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))

0 个答案:

没有答案