使用itertools.product生成指标组合时遇TypeError的技术求助
问题解决:字符串拼接TypeError修复
错误根源是found_subjs里的受试者IDs不是原生Python字符串,大概率是numpy字符串类型(比如从数组/数据框里读取的numpy.str_),直接用+拼接会触发numpy的ufunc匹配错误。
修复步骤:
- 把
s转换为原生Python字符串,用str(s)或者s.item()都可以 - 推荐用f-string拼接指标字符串,比
+更简洁不易出错 - 路径拼接改用
os.path.join或pathlib,避免转义符问题
修复后的代码:
import os from itertools import product cs = ["mean", "median", "sigma"] ds = ["AX", "FA", "fwAX", "fwFA", "fwRAD", "fwVF", "RAD", "TR"] for s in found_subjs: # 转换为原生字符串 s_str = str(s) # 安全拼接路径 subj_path = os.path.join(final_destination, s_str) os.chdir(subj_path) # 生成所有指标组合 for c, d in product(cs, ds): metric = f"{s_str}_ROIstats_{c}_{d}" print(metric)
额外优化(用pathlib更优雅):
from pathlib import Path from itertools import product cs = ["mean", "median", "sigma"] ds = ["AX", "FA", "fwAX", "fwFA", "fwRAD", "fwVF", "RAD", "TR"] for s in found_subjs: s_str = str(s) subj_path = Path(final_destination) / s_str os.chdir(subj_path) for c, d in product(cs, ds): print(f"{s_str}_ROIstats_{c}_{d}")
内容的提问来源于stack exchange,提问作者florence-y
相关产品推荐
相关产品推荐

