Python处理地理矩阵转XY坐标时报错TypeError请求协助
解决TypeError: list indices must be integers or slices, not tuple错误
错误原因
- 列表索引方式错误:你创建的
ew1和ns1是Python嵌套列表,不是numpy数组。Python列表的二维元素访问必须用ew1[a][b],而ew1[a,b]是numpy数组的索引写法,所以触发了类型错误。 - 列表创建的隐藏坑:
[[0]*3600]*1000这种写法会让所有子列表共享同一个引用,修改任意一行的元素,所有行都会跟着改变,不符合你的需求。
解决方案
方案一:修正列表操作(适合坚持用Python列表的情况)
import numpy as np # 假设lon、lat是numpy数组 ew = lon * (180 / np.pi) ns = lat * (180 / np.pi) # 正确创建独立的嵌套列表 ew1 = [[0]*3600 for _ in range(1000)] ns1 = [[0]*3600 for _ in range(1000)] for a in range(len(ew1)): for b in range(len(ew1[0])): ew1[a][b] = ew[a, b] - ew[0, 0] # 改用[a][b]访问列表元素 ns1[a][b] = ns[a, b] - ns[0, 91]
方案二:用numpy数组直接运算(更推荐)
既然你的lon和lat是numpy数组,完全可以利用numpy的广播机制直接完成运算,不需要写循环,代码更简洁高效:
import numpy as np ew = lon * (180 / np.pi) ns = lat * (180 / np.pi) # 直接对整个数组做减法,numpy会自动广播到每个元素 ew1 = ew - ew[0, 0] ns1 = ns - ns[0, 91]
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

