运行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
相关产品推荐
相关产品推荐

