Python 查找最接近0的值的索引时出错

Python 查找最接近0的值的索引时出错,python,arrays,numpy,where-clause,Python,Arrays,Numpy,Where Clause,我的代码有问题。我第一次试图找到y等于(或接近)0的x值 以下代码计算不同参数的x和y值。我不明白的是,当我逐行尝试代码时,我为我的val数组获得了一个最小值,但是使用np.where不起作用,因为它找不到它刚刚获得的这个值。。我认为这可能与min_值的存储方式有关,它以某种方式将其取整,使其不等于以前的值。 我尝试使用'idx=np.where(np.isclose(val,0)),但无法使其工作。我怎样才能解决这个问题 D = np.logspace(21,27,7) x = np.logs

我的代码有问题。我第一次试图找到y等于(或接近)0的x值

以下代码计算不同参数的x和y值。我不明白的是,当我逐行尝试代码时,我为我的val数组获得了一个最小值,但是使用np.where不起作用,因为它找不到它刚刚获得的这个值。。我认为这可能与min_值的存储方式有关,它以某种方式将其取整,使其不等于以前的值。 我尝试使用'idx=np.where(np.isclose(val,0)),但无法使其工作。我怎样才能解决这个问题

D = np.logspace(21,27,7)
x = np.logspace(0,7,500)
V0 = 1.17e+13
alpha = ((4*D)/((3300-1000)*9.81))**(1/4)


fig, axs = plt.subplots(2,4, figsize=(15, 6), facecolor='w', edgecolor='k')
fig.subplots_adjust(hspace = .5, wspace=.001)

axs = axs.ravel()

for i in range(0,len(D)):
  val = np.zeros((len(x)))

  val = -(V0*(alpha[i]**3))/(8*D[i]) * np.exp(-x/alpha[i]) * (np.cos(x/alpha[i]) + np.sin(x/alpha[i]))

  # Find the index for which val crosses the x axis for the first time
  min_val = np.min(np.abs(val))
  idx = np.where(val == min_val)
  idx_first = idx[0][0]
  pos = x[idx_first]

因为你的最小值是负数,所以当你

min\u val=np.min(np.abs(val))

min_val不是数组的成员。但它是
np.abs(val)
的成员,因此我建议:


idx=np.where(np.abs(val)=min\u val)

错误到底是什么?请创建一个,可能不需要一个绘图来观察问题。对于无用的代码,很抱歉。错误代码为:索引0超出大小为0的轴0的界限。奇怪的是它找到了数组的最小值。然后,当我使用np.where查找这个最小值的索引时,它在数组中找不到它。正如我所写的,我认为这是因为小数太多了,而真正的最小值和保存的最小值之间的差别很小。所以当我使用np.where时,它再也找不到了。然而,通过使用np.isclose,我发现它是可行的,但事实并非如此