如何将数组转换为标量?类型错误:只有整数标量数组可以转换为标量索引

问题描述

我已将 myfunction 从一个脚本调用到另一个脚本中。我的函数如下所示:

import numpy as np
from hypy import htj
def myfunction(transmissivity,S,t,headchange,rw,b_aquitard,K_aquitard):
    tD = T * t / (rw**2 * S)
    Lp = rw/np.sqrt(transmissivity *b_aquitard/K_aquitard)
    for i in range(Lp):
        W_leaky,_ = htj.dls_array(np.array([Lp]),tD)
        myfunction = (headchange * transmissivity  * t * 2 * np.pi) / W_leaky
        return myfunction

htj.dls_array 函数是从另一个脚本调用的。 myfunction 运行正常,没有任何错误。 现在,我从脚本 myfunction

导入 solving_functions
import numpy as np
from solving_functions import myfunction

import rasterio
from rasterio.plot import show

#### Parameters 
rw = 0.15 
t = 30   
K_aquitard = 1e-4
b_aquitard = 10  
S = 1e-3   

#### Read raster files
transmissivity = rasterio.open("D:/washingon county/rasters/Elmo_T_rev1_1.tif")
transmissivity_array = transmissivity.read(1)
headchange = rasterio.open("D:/washingon county/rasters/qgis/head_change_85_5.tif")
headchange_array = eheadchange.read(1)

##### IC calculation 
IC_leaky = myfunction(transmissivity_array,headchange_array,K_aquitard)

# ###### Convert and save array as raster
driver = "GTiff"
dim = IC_leaky.shape
height = dim[0]
width = dim[1]
count = 1
dtype = IC_leaky.dtype
crs = transmissivity.crs      #### Projection system
transform = transmissivity.transform
with rasterio.open("D:/washingon county/rasters/IC_leaky_test.tif","w",driver=driver,height=height,width=width,count=count,dtype=dtype,crs=crs,transform=transform) as dst:
     dst.write(IC_leaky,indexes=1)

show(IC_leaky,title='IC leaky',cmap='Spectral')




File "E:\Python\Python_works\solving_functions.py",line 123,in myfunction
    for i in range(Lp):
TypeError: only integer scalar arrays can be converted to a scalar index

我是 Python 的新手。我知道错误的来源,但我无法纠正它们。该错误可以通过在循环内调用函数 htj.dls_array 来解决,因为 Lp 是一个二维数组。 我将非常感谢更改行 for i in range(Lp):W_leaky,tD) 以使其运行的任何直接帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)