You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理地理矩阵转XY坐标时报错TypeError请求协助

解决TypeError: list indices must be integers or slices, not tuple错误

错误原因

  1. 列表索引方式错误:你创建的ew1和ns1是Python嵌套列表,不是numpy数组。Python列表的二维元素访问必须用ew1[a][b],而ew1[a,b]是numpy数组的索引写法,所以触发了类型错误。
  2. 列表创建的隐藏坑:[[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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:40:28