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

运行Python代码触发TypeError:字符串间不支持/运算,求排查解决

解决numpy数组最大值减最小值的类型错误

你的代码核心问题是把变量名字符串当成了变量本身:

  • "Time"+str(i)+"J"生成的是字符串(比如"Time10J"),调用max()和min()时,Python会计算这个字符串里字符的ASCII码极值,得到的是单个字符,字符之间做算术运算自然会触发类型错误(你报错里的/可能是笔误,但本质是字符串类型不支持算术操作)。

而你需要操作的是名为Time10J、Time15J等的numpy数组,正确做法有两种:

推荐方案:用容器统一管理数组

把所有numpy数组放到字典或列表里,避免通过字符串拼接取变量,代码更清晰易维护:

import numpy as np

# 先将数组存入字典(键对应数字后缀)
time_data = {
    10: Time10J,
    15: Time15J,
    20: Time20J,
    25: Time25J,
    30: Time30J,
    35: Time35J,
    40: Time40J
}

t_c = []
for i in range(10, 41, 5):
    current_arr = time_data[i]
    # 调用numpy数组的max()、min()方法计算极值差
    t_c.append(current_arr.max() - current_arr.min())

备选方案:通过命名空间获取变量(不推荐)

如果实在要通过变量名字符串获取数组,可以用globals()(全局命名空间)或locals()(局部命名空间),但这种写法可读性差,容易引发bug:

t_c = []
for i in range(10, 41, 5):
    # 从全局命名空间中取出对应数组
    current_arr = globals()[f"Time{i}J"]
    t_c.append(current_arr.max() - current_arr.min())

关键说明

numpy数组自带max()和min()方法,直接调用就能得到整个数组的最大值和最小值,不需要用Python内置的max()/min()函数(内置函数对numpy数组也能生效,但推荐用数组自身的方法,效率更高)。

内容的提问来源于stack exchange,提问作者Nazmus Saquib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:10:17