Numpy.where函数和语法的问题

2024-10-01 07:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些代码来创建数据表,但遇到了一个问题。在代码的早期,我创建了程序需要检查的速度范围,如下所示:

Vskn=np.linspace(Vl,Vh, num=int ((Vh-Vl)*2+1))

对于每个Vskn,我然后计算FN和Frcrit,这是使用Vskn列表的独立函数。。。基本上我需要每种速度的FN和Frcrit

在后面的代码中,我需要确定FN或Frcrit是否更高,然后根据该结果对它们进行一些计算。我已经尝试了以下每一项,但都没有成功

np.where(FN<Frcrit[kFrm=1,kFrm=(FN/Frcrit)**c1dm])

导致“语法错误:无效语法”

#if FN<Frcrit:
#    kFrm=1
#else:
#    kFrm=(FN/Frcrit)**c1dm

导致“ValueError:具有多个元素的数组的真值不明确。请使用a.any()a.all()

我如何解决这个问题


Tags: 代码程序npnum速度int数据表fn
1条回答
网友
1楼 · 发布于 2024-10-01 07:23:01

你的语法有点错误。使用numpy时,直接使用索引通常比使用where更容易。因此,如果kFrm已经存在,那么您可以索引到kFrm“where”FN < Frcrit并将其设置为1,类似地,索引到kFrm“where”FN >= Frcrit并将其设置为等式。我还在greater_than_vals中建立索引,以使形状工作

kFrm[FN < Frcrit] = 1
greater_than_vals = (FN / Frcrit) ** c1dm
kFrm[FN >= Frcrit] = greater_than_vals[FN >= Frcrit]

如果kFrm尚不存在,则可以执行以下操作:

kFrm = np.ones_like(FN)
greater_than_vals = (FN / Frcrit) ** c1dm
kFrm[FN >= Frcrit] = greater_than_vals[FN >= Frcrit]

相关问题 更多 >