将变量传递给np.where函数时出错

时间:2020-08-17 17:10:08

标签: python macos numpy where-clause

我有用于读取和显示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] 

1 个答案:

答案 0 :(得分:0)

菜鸟错误(全天)。这是一个dtype冲突。我只需要将传入的Line_box字符串转换为整数即可。

        else:    
        inds=np.where(inlines==(int(CXline)))[0]