“float”对象已取消订阅

2024-09-28 17:18:15 发布

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

这就是我得到的:

TypeError: 'float' object is unsubscriptable

我就是这么做的:

^{pr2}$

lan/lot在脚本的前面被读取。我正在处理一个netCDF文件,这是纬度/经度,读入lan/lot。 它是一个数组,用numpy构建。在

哪里出错了? 我试图用int()b和{}转换为整数,但这没用。 N.where正在通过xy中的值访问网格上我要继续处理的某个值。如果你需要更多的代码或绘图,请告诉我。在


Tags: 文件numpy脚本objectisnetcdf数组float
1条回答
网友
1楼 · 发布于 2024-09-28 17:18:15

您的问题是,当您在xy上循环时,l的每个值都是xy列表中的一个元素,元组之一。循环的第一次迭代中l的值是(3.625, 41.435),第二次迭代是(3.625, 42.435),依此类推。在

当你做l[b]时,你得到3.625。当您执行l[b][b]时,您将尝试获得3.625的第一个元素,但这是一个浮点,因此它没有索引。这给了你一个错误。在

换句话说,在循环的第一次迭代中,l与{}相同,因此{}与{}相同。在第二次迭代中,l与{}相同,因此l[0]与{}相同。在第三次迭代中,l等价于xy[2],依此类推。所以在第一次迭代中,l[0][0]xy[0][0][0]相同,但是没有这样的东西,所以会得到一个错误。在

要获得元组的第一个和第二个值,使用索引方法,只需执行以下操作:

x = l[0]
y = l[1]

或者,在你的情况下:

^{pr2}$

然而,最简单的解决方案是使用所谓的“元组解包”:

for x, y in xy:
    idx = N.where(lon==x)[0][0]
    idy = N.where(lat==y)[0][0]

相当于:

for l in xy:
    x, y = l
    idx = N.where(lon==x)[0][0]
    idy = N.where(lat==y)[0][0]

这又相当于:

for l in xy:
    x = l[0]
    y = l[1]
    idx = N.where(lon==x)[0][0]
    idy = N.where(lat==y)[0][0]

相关问题 更多 >