python邻近站点匹配算法——tuple转换为int

python邻近站点匹配算法——tuple转换为int

这两天接到一个任务

这两天接到一个任务,需要输出本省200多个旅游景区的预报。最初,准备读取格点天气预报再插值到站点的方式实现,但是在脑子里架构了一下代码,感觉在原有业务模块中加入这一块有点突兀和麻烦,需要定义景区的站点预报数据,还要写格点到站点的插值模块,总之就是好烦。于是决定偷个懒,用区域站预报中最近的那个站点来替代景点站点。

代码part

import numpy as np

telecom_std  = 'h:/telecom_std.txt'    #景区站点表
std_tele = np.loadtxt(open(telecom_std,encoding='UTF-8'),dtype=str)
nstd_tele = len(std_tele)
std_tele_lat  = std_tele[:,1].astype(float)
std_tele_lon  = std_tele[:,2].astype(float)

std_file = 'h:/js_sta_index.txt'  #区域站站点表
std_data = np.loadtxt(std_file,dtype=str)
std_no   = std_data[:,0]
std_lon  = std_data[:,1].astype(float)
std_lat  = std_data[:,2].astype(float)

for k in range(nstd_tele):
    dd = np.sqrt((std_lon-std_tele_lon[k])**2 + (std_lat-std_tele_lat[k])**2)
    j  = np.where(dd==np.min(dd))

跑了一下么的问题,很是开心。把这块接到业务代码上试一下。
str_TT = str(’{:.1f}’.format(t2m_std[i, j]))
TypeError: unsupported format string passed to numpy.ndarray.format
报了个这个错。。。果然不让人省心啊

解决

仔细一看,python下这个j的数据类型是tuple,那应该把它转成int就可以了吧。直接用int(j)
报错:
TypeError: int() argument must be a string, a bytes-like object or a number, not ‘tuple’
然后百度了一圈没有找到解决方案,只好上国外的网站继续搜,果然一下就解决了。
在这里插入图片描述

for k in range(nstd_tele):
    dd = np.sqrt((std_lon-std_tele_lon[k])**2 + (std_lat-std_tele_lat[k])**2)
     j  = int(np.where(dd==np.min(dd))[0])

改完收工,再带腿毛们吃一把鸡。
哎呀,这次被大哥带了,太羞耻了。。。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nju911/article/details/106789136