如何解决x和y形状不同的Python中的尺寸问题

时间:2019-04-16 13:10:53

标签: python

我的代码运行并按预期返回K的值,但由于尺寸问题,图形未显示w。感谢您的帮助。

import numpy as np
import pylab as pl

k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))

w = np.sqrt((g*k)*np.tanh(h*k))

k = max(k[w<=0.5])
print("The wave number, k = %.4f" % k)

pl.figure()
pl.plot(k, w)
pl.show()

但是,绘图返回以下错误:

  

x和y必须具有相同的第一尺寸,但形状为(1,)和(1000,)

1 个答案:

答案 0 :(得分:1)

这可以做到:

import numpy as np
import pylab as pl

k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))

w = np.sqrt((g*k)*np.tanh(h*k))

kmax = max(k[w<=0.5])
print("The wave number, k = %.4f" % kmax)

pl.figure()
pl.plot(k, w)
pl.show()

output

OP在评论中还提到他想在情节上标记点kmax。
可以按照以下步骤进行操作:

import numpy as np
import pylab as pl

k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))

w = np.sqrt((g*k)*np.tanh(h*k))

kmax = max(k[w<=0.5])
print("The wave number, k = %.4f" % kmax)

pl.figure()
pl.plot(k, w)
pl.plot(kmax,w[k==kmax],'.',color='r')
pl.show()

output2