我有用于读取和显示SEGY地震数据的工作代码。功能版本太大,无法在此处粘贴。我遇到的问题是以下部分。
#find traces indices that belong to Inline x
CXline=self.Line_box.text() #Get chosen line from Gui textbox
if CXline=="": #If empty, use all inline indices
inds=np.where(inlines)[0]
else:
inds=np.where(inlines==(CXline))[0] #load data for specific inline indices.
如果Line_box(QT textEdit框)留为空白,则“ if”部分按预期工作,并且“ inds”输出数组正确,并且代码继续运行。
如果我在Line_box中输入一个数字(例如425),我想发生的事情就是将该数字用于np.where函数中,但它不起作用,它只会输出一个空数组,并且代码停止。我还收到以下消息(尽管是导致崩溃的空数组)。
Warning (from warnings module):
File "/Users/willhutchins/Documents- Offline/Python/Synth_Seismic/SEGY View/SEGY_Viewer.py", line 269
inds=np.where(inlines==(str(CXline)))[0]
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
如果我按如下所示在代码中手动键入数字,则代码会按预期运行,因此这与np.where如何理解Line_box的输入有关。我假设我语法错误或需要将Line_box输入转换为其他dtype。
else:
inds=np.where(inlines==425)[0]
答案 0 :(得分:0)
菜鸟错误(全天)。这是一个dtype冲突。我只需要将传入的Line_box字符串转换为整数即可。
else:
inds=np.where(inlines==(int(CXline)))[0]